javascript - 为什么在渲染时调用我的 onClick? - react .js

标签 javascript reactjs redux

我有一个我创建的组件:

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);

当我呈现此页面时,activatePlaylist 会为我的map 中的每个playlist 调用。如果我 bind activatePlaylist 像:

activatePlaylist.bind(this, playlist.playlist_id)

我也可以使用匿名函数:

onClick={() => this.activatePlaylist(playlist.playlist_id)}

然后它按预期工作。为什么会这样?

最佳答案

您需要传递给 onClick 引用函数,当你这样做时activatePlaylist( .. )你调用函数并传递给 onClickactivatePlaylist 返回的值.您可以使用以下三个选项之一:

1。使用 .bind

activatePlaylist.bind(this, playlist.playlist_id)

2。使用箭头函数

onClick={ () => this.activatePlaylist(playlist.playlist_id) }

3。或者从 activatePlaylist 返回函数

activatePlaylist(playlistId) {
  return function () {
     // you code 
  }
}

关于javascript - 为什么在渲染时调用我的 onClick? - react .js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34226076/

相关文章:

javascript - 刷新 Redux 组件后浏览器中的错误 "Cannot GET"url

javascript - JavaScript 中的搜索属性

javascript - 更新指令的范围并使用另一个指令进行观察

javascript - 日期格式在 Chrome 中给出的结果与在其他浏览器中不同吗?

Android 上的 JavascriptInterface 不能在 Release模式下使用 APK

html - 如何使文本在 map 图钉标记CSS中正确对齐?

javascript - 用户单击标记图标时如何更改 Google map 标记图标

reactjs - TypeScript - 模块 '"*.svg "' has no exported member ' ReactComponent

javascript - 通过 React-Redux 进行地理定位

javascript - Redux-thunk:API 响应保持挂起状态