3
我需要根据复选框中的事件显示一些HTML。 当放置在forEach循环中时,父节点上的onClick事件不会传递函数(here's my fiddle)。关于它的奇怪之处是,当我将它传递给单个元素时它会传递一个函数。onClick事件在放置在ReactJS中的forEach循环时未传递函数
var App = React.createClass({
getInitialState: function() {
return {toggle: false}
},
handleClick : function(event){
this.setState({toggle : !this.state.toggle});
},
render: function(){
var checkboxes = [];
this.props.data.forEach(
function(name)
{
checkboxes.push(<CheckBox onClick={this.handleClick} name={name} />);
});
var textBox = this.state.toggle ? <InputBox name="Bar" /> : null;
return (
<div>
<CheckBox name="Foo" onClick={this.handleClick} />
{checkboxes}
{textBox}
</div>
);
}
});
有谁知道为什么发生这种情况?这是一个错误还是我做错了什么?
'this'实际上是未定义的,或者是forEach回调中非严格模式下的全局对象。 – FakeRainBrigand 2015-02-06 22:57:32
'forEach'将可选的第二个参数作为'this'上下文,不需要调用'bind':'this.props.data.forEach(function(){...},this);' – 2015-02-07 06:49:12
糟糕,我猜我还有更多要了解'this'。编辑我的原始答案。我留下了绑定示例,因为在类似的情况下,通过'this'作为参数不是一种选择可能会有用。 – 2015-02-07 08:31:43