onClick={onRouteChange('home')}
onClick={ () => onRouteChange('home')}
从我一直在观看的教程中,它说第一个将在渲染时被调用,而后者将在onClick发生时运行。我完全不明白。
答案 0 :(得分:0)
必须为onClick
,onBlur
等事件分配一个函数(即回调)。触发相关事件时,该函数将被执行。换句话说,必须为它分配一个函数,该函数包含发生该事件时要执行的代码。
这意味着:
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);
};
}
那么第一个解决方案就可以了。