同步redux-saga并反应生命周期

时间:2016-10-14 09:56:16

标签: reactjs redux-saga

React组件有它们的生命周期(componentWillMount,componentDidMount等),saga也有它自己的生命周期(作为中间件运行)。

有没有办法同步这两个生命周期?

我认为当我们希望通过授权保护某些组件(在多个访问级别上)时,这可能是个问题

1 个答案:

答案 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
}