簡體   English   中英

onClick = {onRouteChange('home')}和onClick = {()=> onRouteChange('home')}有什么區別?

[英]What is the difference between onClick={onRouteChange('home')} and onClick={ () => onRouteChange('home')}?

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

從我一直在觀看的教程中可以看出,第一個將在渲染時被調用,而第二個將在onClick發生時運行。 我不明白。

必須為事件(如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);
  };
}

那么第一個解決方案就會奏效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM