onClick = {onRouteChange('home')}和onClick = {()=>之间有什么区别? onRouteChange( '家')}?

时间:2018-02-12 07:37:22

标签: javascript reactjs

onClick={onRouteChange('home')}
onClick={ () => onRouteChange('home')}

从我一直在观看的教程中,它说第一个将在渲染时被调用,而后者将在onClick发生时运行。我完全不明白。

1 个答案:

答案 0 :(得分:0)

必须为onClickonBlur等事件分配一个函数(即回调)。触发相关事件时,该函数将被执行。换句话说,必须为它分配一个函数,该函数包含发生该事件时要执行的代码。

这意味着:

  • onClick={onRouteChange('home')}

    这会将onRouteChange('home')的返回值分配给click事件。如果该函数返回一个函数,那么你就是好人。但我猜这不是这种情况。

  • onClick={() => onRouteChange('home')}

    这将分配一个匿名函数(() =>部分),在运行时调用onRouteChange函数。这可能就是你想要的。

所以如果你的功能是这样的话:

onRouteChange(path) {
  this.props.history.push(path);
}

然后你想要最后的解决方案。

但是,如果更像是:

onRouteChange(path) {
  return () => {
    this.props.history.push(path);
  };
}

那么第一个解决方案就可以了。