2017-01-06 3 views
2

У меня есть два раздела моего приложения. У каждого из них есть собственное связующее программное обеспечение саги, но оба они не создаются одновременно. Это всегда одно или другое. Например, сага для обработки логина и другая для обработки главной страницы.Как остановить/завершить/отменить сага о редукции?

Мне интересно, как мне следует срывать саги о редукции при навигации между двумя разделами моего приложения. Должен ли я позволить ему просто собирать мусор? Но что, если есть еще действия, которые находятся в очереди? Эти действия по-прежнему должны быть очищены от буферов.

ответ

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); 
} 

Итак, когда вы переходите от одной части к другой, наблюдатели будут отменены. Вы можете повторно закачивать наблюдателей при переходе на этот маршрут.