我最近开始在使用redux-saga
的项目中工作。
这是我们如何在ui组件中初始化sagas。
public componentDidMount() {
sagaMiddleware.run(softwareLicenseCodesSagas);
}
通过阅读一些文档(https://redux-saga.js.org/docs/api/),我了解到此方法将返回具有task description
方法的cancel
。
我们不会存储这些task descriptors
,因此我们永远不会在它们上运行cancel
。这有问题吗?
我的猜测是,每次安装ui组件时,sagaMiddleware.run()
会将事件监视程序添加到store
上,当组件卸载时,事件监视程序将被孤立。是一个问题。
如果有问题,有什么更好的方法来管理React组件中的传奇观察者的生命周期?
我的猜测是我们应该这样做:
public componentDidMount() {
sagasTaskRunner = sagaMiddleware.run(softwareLicenseCodesSagas);
}
public componentWillUnmount() {
sagasTaskRunner.cancel();
}