2017-01-06 20 views
2

我有我的應用程序的兩個部分。他們每個人都有自己的傳奇中間件,但兩者都不會同時實例化。它總是一個或另一個。例如,一個處理登錄的傳奇和另一個處理主頁面的傳奇。如何停止/結束/拆解REDX傳奇?

我想知道在我的應用程序的兩個部分之間導航時,我應該如何拆卸REDX傳奇。我應該讓它只是垃圾收集?但是如果仍有行動在隊列中呢?這些操作仍然需要從緩衝區中清除。

回答

0

你可以取消你的位置變化的觀察者。因此,對於你守望者的代碼將是這樣的:

import { takeLatest, take, cancel } from 'redux-saga/effects'; 
import { LOCATION_CHANGE } from 'react-router-redux'; 

function* watchTheRequest() { 
    const watcher = yield takeLatest('SOME_TYPE', callMySaga); 
    yield take(LOCATION_CHANGE); 
    yield cancel(watcher); 
} 

所以,當你從一個部分移動到另一個時,觀察家將被取消。移動到該路線時,您可以重新注入觀察者。