react redux 同步调用
Posted
技术标签:
【中文标题】react redux 同步调用【英文标题】:react redux synchronous call 【发布时间】:2016-09-06 20:18:37 【问题描述】:使用 redux 作为通量模式构建 React 应用程序。
要使用 api,需要进行令牌交换请求。这必须在 React 应用程序启动时发生一次。令牌交换返回的 access_token 需要存储在 redux 状态,并且可以被其他 api 调用访问。
我尝试的一种方法是在 App(parent) 组件中调用 redux 操作,然后所有其他调用都在子组件中。 React 新手我现在明白这不是正确的方法,因为 React 组件生命周期事件以及调用的动作和 reducer 不遵循同步流程,因此异步调用 redux 动作。
如何确保在任何其他依赖于第一个 redux 操作结果的 redux 操作之前调用 redux 操作?哪个中间件最适合确保同步方法 redux-thunk、redux-look 和 redux-saga。
【问题讨论】:
一切都可以通过足够的工作映射回 CSP,因此 redux-thunk 应该足以满足您的需求。 【参考方案1】:如果您需要在任何其他操作之前运行一个进程,您可以在创建商店之前执行它,并在创建商店时将结果传递给您的主要 reducer 函数。
然后,在这个过程的promise或callback完成后,渲染应用。
否则,只需在商店创建之后和应用渲染之前调度这个初始操作(如果它是异步的,则使用 redux-thunk)。
【讨论】:
【参考方案2】:您可以使用redux-thunk 在调度操作时具有“类似承诺”的行为。通过这种方式,您可以确保在分派另一个操作之前完成一个操作。
【讨论】:
以上是关于react redux 同步调用的主要内容,如果未能解决你的问题,请参考以下文章
在 React 中使用 preloadedState 进行测试:在函数中手动导入存储时,redux 存储不同步
如何解决 redux-persist 创建同步存储失败。回退到 React.js 中的 noop 存储