考慮一個多頁面應用程序,在打開一個頁面時,它會啓動一個計時器,負責每隔n秒處理一次數據。現在考慮你想進入另一個頁面,你如何保證定時器將被停止(因爲它不會在第二頁上需要)。React + Flux - 在多頁面上卸載頁面
我會實現它,如下所示:
App.jsx
onClickNavigateToPageA: function() { AppActions.goToA(); }
AppActions.js
goToA: function() {
DispatchActionToLoadComponentPageA();
DispatchActionToStartTimer();
}
現在我點擊去B.如何告訴計時器頁面停止?如果我在componentWillUnmount上執行此操作(通過操作,我相信),我將在操作(加載頁面B的操作)期間調度操作,因此它是錯誤的。
正確的方法是在加載頁面A後立即註冊一個回調(這將調用一個禁用定時器的動作),然後在加載任何其他頁面時調用它?據我所知,商店現在不應該用於從服務器獲取數據的API(包括定時器,它應該是動作創建者)。
看起來像一個乾淨的解決方案也許有點沉重,只是一個計時器,但乾淨我猜 –
計時器是隻是一個例子。 –
我明白你現在在說什麼。很明顯,當頁面加載時啓動計時器的商店可能負責在需要其他頁面時停止該計時器。 –