高级 - 连接 Sagas 至外部输入和输出

优质
小牛编辑
126浏览
2023-12-01

我们已经看到了,take Effect 是通过等待 action 被发起到 Store 来解决(resolved)的。
也看到了 put Effect 是通过发起一个 action 来解决的,action 被作为参数传给 put Effect。

当 Saga 启动了(不管是初始启动或是稍后动态启动),middleware 会自动将它的 take / put 连接至 store。
这 2 个 Effect 可以被看作是一种 Saga 的输入/输出(Input/Output)。

redux-saga 提供了一种方式在 redux middleware 环境外部运行 Saga,并可以连接至自定义的输入输出(Input/Output)。

  1. import { runSaga } from 'redux-saga'
  2. function* saga() { ... }
  3. const myIO = {
  4. subscribe: ..., // 用于解决 take Effects
  5. dispatch: ..., // 用于解决 put Effects
  6. getState: ..., // 用于解决 select Effects
  7. }
  8. runSaga(
  9. saga(),
  10. myIO
  11. )

欲了解更多信息请参见 API 文档