我是新手做出反应,所以我对此并不了解。 我正在尝试向li添加一个单击处理程序,但该函数似乎未定义?
var ActivityList = React.createClass({
getInitialState: function() {
return {name:"test"};
},
handleClick:function(e){
console.log(e.target.name);
},
render:function(){
return (
<ul>
{this.props.data.map(function(game){
return <li onClick={this.handleClick} name={game.name}>{game.name}</li>;
})
}
</ul>);
}
});
我想知道是不是因为我的范围错误了?
答案 0 :(得分:13)
将this
设置为.map
,因为在.map
中,回调this
指的是全局范围(在浏览器中为window
或undefined
你使用strict mode
)
this.props.data.map(function(game) {
return <li onClick={this.handleClick} name={game.name}>{game.name}</li>;
}, this);
^^^^^
答案 1 :(得分:5)
您还可以使用箭头功能来避免在函数中绑定this
:
this.props.data.map(game =>
<li onClick={this.handleClick} name={game.name}>{game.name}</li>
)