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