我有一个已创建的组件:
class Create extends Component {
constructor(props) {
super(props);
}
render() {
var playlistDOM = this.renderPlaylists(this.props.playlists);
return (
<div>
{playlistDOM}
</div>
)
}
activatePlaylist(playlistId) {
debugger;
}
renderPlaylists(playlists) {
return playlists.map(playlist => {
return <div key={playlist.playlist_id} onClick={this.activatePlaylist(playlist.playlist_id)}>{playlist.playlist_name}</div>
});
}
}
function mapStateToProps(state) {
return {
playlists: state.playlists
}
}
export default connect(mapStateToProps)(Create);
当我render
这个页面,activatePlaylist
被每一个信息playlist
在我的map
。如果我bind
activatePlaylist
喜欢:
activatePlaylist.bind(this, playlist.playlist_id)
我还可以使用匿名函数:
onClick={() => this.activatePlaylist(playlist.playlist_id)}
然后它会按预期工作。为什么会这样?
您传递方法的方式
1。this.activatePlaylist(playlist.playlist_id)
将立即调用该方法。您应该将方法的引用传递给onClick
事件。按照下面提到的一种实现来解决您的问题。在这里,bind属性用于
2。this.activatePlaylist
通过传递this
上下文和参数来创建方法的引用playlist.playlist_id
这会将一个函数附加到onClick事件,该事件仅在用户单击操作时触发。执行此代码时,
this.activatePlaylist
将调用该方法。