直接使用 input.value = xxx这样是没有用的。后续找到下面代码能够使用

let input = 输入框;
let lastValue = input.value; // 将input现有值保存到变量
input.value = 111; // 设置input的值
let eventb = new Event('input', { bubbles: true }); // 创建一个名为input的自定义事件,允许冒泡
let tracker = input._valueTracker;
if (tracker) {
    tracker.setValue(lastValue);
}
input.dispatchEvent(eventb);

还有另一种同样支持react15和16的

let input = someInput; 
let lastValue = input.value;
input.value = 'new value';
let event = new Event('input', { bubbles: true }); // 有人反应input无效,change会有效,如果input对你无效时你可以尝试更改
// hack React15
event.simulated = true;
// hack React16 内部定义了descriptor拦截value,此处重置状态
let tracker = input._valueTracker;
if (tracker) {
  tracker.setValue(lastValue);
}
input.dispatchEvent(event);

还有更多

对于 React ≥ 15.6.1

const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
  window.HTMLInputElement.prototype,
  'value').set; // 获取input的原型上value属性的setter方法
nativeInputValueSetter.call(input, newValue); // 设置input的值
const event = new Event('input', { bubbles: true }); // 直接调用上面不会触发react的双向绑定处理(可能?)所以我们要创建一个事件再派遣过去
input.dispatchEvent(event);

对于 React ≤ 15.6.0

input.value = newValue;
const event = new Event('input', { bubbles: true });
event.simulated = true;
input.dispatchEvent(event);

来源:https://stackoverflow.com/questions/23892547/what-is-the-best-way-to-trigger-change-or-input-event-in-react-js#46012210

https://github.com/facebook/react/issues/11488

https://chuckconway.com/changing-a-react-input-value-from-vanilla-javascript/