在 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:在 redux 状态更改时 mapStateToProps 更新状态,但视图未按照新状态呈现
REACT + REDUX:在redux状态更改mapStateToProps更新状态但视图不按照新状态呈现