我有我創建了一個組件:爲什麼我的onClick被渲染時調用? - React.js
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
在我map
呼籲每個playlist
。如果我bind
activatePlaylist
喜歡:
activatePlaylist.bind(this, playlist.playlist_id)
我也可以使用匿名函數:
那麼它將按預期工作。爲什麼會發生?
我不記得它在以前版本的'React'中以這種方式工作。我記得是錯的還是有'api'改變了? – jhamm
@jhamm你正在使用ES6類,在這種情況下,你應該手動綁定上下文。 –
@jhamm https://jsfiddle.net/69z2wepo/23823/ –