【问题标题】:Dispatching new action after global state changes in react redux在 react redux 中全局状态更改后调度新动作
【发布时间】:2018-05-23 12:11:23
【问题描述】:

假设我有一个表单,用户即将点击按钮组合。

每个按钮触发一个类型为 T 和 reducer R 的动作,然后更新其状态,并在网站上呈现新的组合。

现在是棘手的部分: 我在减速器中实现了我的业务逻辑,它应用了即将呈现的新状态。我现在需要的是当该状态接受一个条件时,我想发送新的操作(api 请求)。

解决此类问题的正确方法是什么?

将标志设置为状态,然后在组件中调用新操作? 以某种方式在 reducer 中调度函数?

...?

【问题讨论】:

  • "该状态何时有效" - 您对有效状态的定义是什么?
  • 我的意思是当条件满足时

标签: reactjs ecmascript-6 redux


【解决方案1】:

Redux Thunk 允许您分派多个操作并在您的操作创建者中分派异步操作。对于您的方案,您可以执行以下操作:

function myAction() {
  return (dispatch, getState) => {
    ...
    dispatch(firstAction);

    const state = getState();

    // Check your state conditions from first action here.
    dispatch(secondAction);
    ...
  }
}

【讨论】:

  • 我会试试你的解决方案,看起来很有希望。
【解决方案2】:

在这种情况下,您可以使用库 redux-saga。 使用 redux-saga,您将能够创建一个您从组件(如操作)调用的 saga。在 saga 中,您将能够调用多个 redux-action。如果您的状态在 saga 中有效,则可以调用 API 请求。 redux-saga 的流行替代品也是 redux-thunk

【讨论】:

  • 您能否提供一些使用 thunk 的场景的序列图?
  • 对不起,我没用过 thunk,我用过 redux-saga,但是我写了关于 thunk,因为我知道这个库也可以处理这种情况。
猜你喜欢
  • 2020-12-29
  • 2019-08-15
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多