我知道这个答案来得有点晚,但我最近遇到了类似的问题。我想在嵌套组件上触发一个事件。我有一个包含单选和复选框类型小部件的列表(它们是行为类似于复选框和/或单选按钮的 div),在应用程序的其他地方,如果有人关闭了一个工具箱,我需要取消选中一个。
我找到了一个非常简单的解决方案,不确定这是否是最佳实践,但它有效。
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': false
});
var node = document.getElementById('nodeMyComponentsEventIsConnectedTo');
node.dispatchEvent(event);
这触发了 domNode 上的点击事件,我通过 react 附加的处理程序确实被调用了,所以它的行为就像我期望的那样,如果有人点击了元素。我没有测试过 onChange 但它应该可以工作,并且不确定这在 IE 的真正旧版本中如何公平,但我相信 MouseEvent 至少在 IE9 及更高版本中受支持。
对于我的特定用例,我最终放弃了这个,因为我的组件非常小(只有我的应用程序的一部分使用了 react,因为我还在学习它)而且我可以用另一种方式实现同样的事情,而无需获取对 dom 节点的引用。
更新:
正如其他人在评论中所说的那样,最好使用this.refs.refname
来获取对 dom 节点的引用。在这种情况下, refname 是您通过<MyComponent ref='refname' />
.