这是示例:
http://jsfiddle.net/hulufei/twr4thuh/7/ http://jsfiddle.net/hulufei/twr4thuh/7/
绑定时才起作用onClick
在虚拟 dom 中(如第 18 行),但是如果我注释第 18 行并注释第 8 行以绑定单击addEventListener
,失败了。
所以有什么问题?
TestUtils 触发 React 合成事件系统中的事件,因此本机事件addEventListener
监听永远不会被触发。您将需要使用本机click
测试中元素的方法:
var events = Events();
ReactTestUtils.renderIntoDocument(events);
events.refs.button.getDOMNode().click();
events.state.event.should.equal('click');
另外,你还写错了clickHandler
在你的addEventListener
定义。
jsfiddle http://jsfiddle.net/57t19sa6/2/
您还可以通过重用 prop 定义来简化添加事件侦听器:
componentDidMount: function () {
this.refs.button.getDOMNode().addEventListener('click', this.clickHandler);
},
Note:
您有理由想要使用addEventListener
而不是仅仅传递一个onClick
你的按钮的属性?除非有具体且充分的理由,否则我建议在处理事件时以反应方式进行操作以保持理智:)
Edit
我最初提到我不知道 TestUtils 是什么SimulateNative.click https://github.com/facebook/react/blob/006bc28633d1bca028240133934adb4a6dcf5d5f/src/test/ReactTestUtils.js#L417没有触发事件。我错误地认为它会发生,因为它将模拟反应甚至系统中的本机点击事件。 @thilo 为我指出了正确的方向:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)