
简短答案:
function setNativeValue(element, value) {
let lastValue = element.value;
element.value = value;
let event = new Event("input", { target: element, bubbles: true });
// React 15
event.simulated = true;
// React 16
let tracker = element._valueTracker;
if (tracker) {
tracker.setValue(lastValue);
}
element.dispatchEvent(event);
}
var input = document.getElementById("ID OF ELEMENT");
setNativeValue(input, "VALUE YOU WANT TO SET");
参考:https://stackoverflow.com/a/52486921/17360
详细答案:
React 重写了原生 Javascript 的 onChange 行为。触发 onChange 事件并不能在 React 看来改变输入框字段的值。对 React 而言,值仍然是未改变的,尽管用户可以清楚地在屏幕上看到值已经改变了。上面的代码同时也会在 React 中触发这个改变。
作者:Chuck Conway 专注于软件工程和生成式人工智能。在社交媒体上与他联系:X (@chuckconway) 或访问他的 YouTube。