Я недавно начал работать в проекте, где используется 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();
}