在 react redux 中全局状态更改后调度新动作

Posted

技术标签:

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

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

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

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

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

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

...?

【问题讨论】:

"该状态何时有效" - 您对有效状态的定义是什么? 我的意思是当条件满足时 【参考方案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,因为我知道这个库也可以处理这种情况。

以上是关于在 react redux 中全局状态更改后调度新动作的主要内容,如果未能解决你的问题,请参考以下文章

在通过动作调度进行状态更新后,在 React 中使用 Redux 执行函数?

React,redux 组件不会在路由更改时更新

REACT + REDUX:在 redux 状态更改时 mapStateToProps 更新状态,但视图未按照新状态呈现

REACT + REDUX:在redux状态更改mapStateToProps更新状态但视图不按照新状态呈现

在 redux 状态更改后,React 导航不会更改导航屏幕

在路由更改时更新 Redux 状态