0

我正在处理onPaste、解析数据,然后我需要触发任何现有的onChange处理程序。

const event = new Event("change", { bubbles: true});
e.target.dispatchEvent(event);

它适用于原生输入元素,但似乎不适用于 React 组件。在组件上使用时调度change没有效果

这是一个代码示例:https ://codesandbox.io/s/react-paste-change-1tr5k

e.preventDefault是必要的,因为解析后需要替换内容。

似乎与事件冒泡和/或 React 合成事件的行为方式有关,但我无法确定问题所在。

4

1 回答 1

0

作为目前的解决方法,使用inputevent 而不是change.

const ev2 = new Event('input', { bubbles: true})
e.target.dispatchEvent(ev2)

请注意,上面示例中的“自定义”组件只是一个包装好的<input>

const CustomInput = (props) => <input onChange={props.onChange} />

仍然难倒为什么更改事件处理程序不触发。

于 2020-04-11T02:07:54.990 回答