React组件有它们的生命周期(componentWillMount,componentDidMount等),saga也有它自己的生命周期(作为中间件运行)。
有没有办法同步这两个生命周期?
我认为当我们希望通过授权保护某些组件(在多个访问级别上)时,这可能是个问题
答案 0 :(得分:0)
这是可能的。您可以创建一个HOC(高阶组件)来挂钩React的生命周期事件,并调度为redux-saga映射它们的操作。在您的传奇中,您可以使用take
来同步生命周期和控制流。
如果您需要一个有效的例子,请告诉我。我将在Github上为my repository添加一个示例。
// HOC
import Lifecycle from '...';
// Target component
class SecretPane extends Component {
// ...
}
// Export wrapped SecretPane component
export default Lifecycle(SecretPane);
// ...
function* lifecycle() {
yield take(COMPONENT_WILL_MOUNT);
// Do something before mounted
yield take(COMPONENT_DID_MOUNT);
// Do something after mounted
yield take(COMPONENT_WILL_UNMOUNT);
// Do something before unmounted
}