Управление жизненным циклом наблюдателей саги Redux в компонентах React - PullRequest
0 голосов
/ 25 сентября 2018

Я недавно начал работать в проекте, где используется redux-saga.

Вот как мы инициализируем саги в компонентах пользовательского интерфейса.

public componentDidMount() {
    sagaMiddleware.run(softwareLicenseCodesSagas);
}

Я понял из чтения некоторых документов (https://redux -saga.js.org / docs / api / ), что этот метод возвращает task description, который имеет метод cancel.

Мы не хранимэти task descriptors, и поэтому мы никогда не запускаем cancel на них.Это проблема?

Я предполагаю , что каждый раз, когда монтируется компонент пользовательского интерфейса, sagaMiddleware.run() будет добавлять наблюдатели событий в store, который будет потерян, когда компонентразмонтируется, и, таким образом, это является проблемой.

Если это проблема, как лучше управлять жизненным циклом наблюдателей саги в компонентах React?

Я думаю, - это то, что мы должны сделать:

public componentDidMount() {
    sagasTaskRunner = sagaMiddleware.run(softwareLicenseCodesSagas);
}

public componentWillUnmount() {
    sagasTaskRunner.cancel();
}
...