我試圖開始反應。檢查了代碼示例後,我遇到了一件非常奇怪的事情。這是鏈接[React tutorial]。這是生命週期部分的代碼;-js-反應「組件確實掛載」示例
componentDidMount() {
this.timerID = setInterval(
() => this.tick(),
1000
);
}
那麼,在設置爲什麼使用箭頭函數的時間間隔?我嘗試了其他方式(this.tick()本身),但它沒有按預期工作。
我試圖開始反應。檢查了代碼示例後,我遇到了一件非常奇怪的事情。這是鏈接[React tutorial]。這是生命週期部分的代碼;-js-反應「組件確實掛載」示例
componentDidMount() {
this.timerID = setInterval(
() => this.tick(),
1000
);
}
那麼,在設置爲什麼使用箭頭函數的時間間隔?我嘗試了其他方式(this.tick()本身),但它沒有按預期工作。
的setInterval需要傳遞一個函數引用,所以你可以寫
setInterval(() => this.tick(), 1000 );
這不運行this.tick,它只是告訴setInterval的時候選擇運行打勾。箭頭函數將「this」綁定爲您的組件。
然而setInterval( function() { this.tick(); }, 1000 );
不綁定這是您的組件,所以你需要寫setInterval(this.tick.bind(this), 1000 );
如果你寫 setInterval( this.tick(), 1000 );
它傳遞給setInterval之前然後勾選運行,並剔的返回值是什麼將由setInterval使用。
我希望清楚。 setInterval只是想引用該函數:)
-this.tick()和-this.tick-之間沒有區別。我想這是因爲丹王子所說的。這被視爲一個全局對象,所以它不能訪問「this」事物:d感謝人們! –
哦,是的,this.tick不會工作,如果在setInterVal中調用,因爲當setInterval調用this.tick時,它使用setInterval內的上下文。所以這不會是你的組件,但它會是setInterval所處的任何上下文。 –
[箭頭函數不會重新綁定'this'。](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions #No_binding_of_this) –
謝謝了! –