【问题标题】:Can we access the changed reducer state in react app synchronously?我们可以在 react app 中同步访问更改后的 reducer 状态吗?
【发布时间】:2018-02-17 02:23:05
【问题描述】:

我已经调度了一个不包含任何异步代码的动作,例如 ajax 调用或任何改变减速器状态的东西。我可以在 react 应用程序的下一行访问更改后的 reducer 状态吗?

React APP

actions.setName('Test'); //this sets the name in state of reducer to Test
//Can I access the name in the next line
const name = this.props.name;

【问题讨论】:

    标签: javascript reactjs redux


    【解决方案1】:
    let response = await this.props.appAction.processList(token, userName);
    prodArray = this.props.processList;
    

    这是我的示例代码,它可以工作。也许它可以帮助你。 await 关键字对我有用。

    【讨论】:

    • 这里你使用 await 明确地使代码的响应行同步。但我在概念上要问的是 - 在没有任何这些承诺/等待的情况下,reducer 状态变化和新状态是否可以在到达下一行时可用
    • 是的,因为 redux 功能是同步的。这里我的 appAction.processList 是一个网络请求,这就是为什么需要等待。
    • 调度函数不同步。
    • stackoverflow.com/questions/43276291/…也许这有助于你理解
    【解决方案2】:

    刚刚发现我们无法立即更新状态并在下一行中作为道具使用。

    获得更新状态的唯一方法是在组件重新渲染时。您不能期望下一行在任何时候都具有最新状态。

    查看此讨论以进一步了解如何解决此问题。

    Click for the discussion thread

    【讨论】:

      【解决方案3】:

      Redux 存储本身的状态会立即更新,因为调度是同步的。但是,React 的重新渲染几乎总是异步的,所以不,对 props 的更新在动作被调度后立即可用。

      【讨论】:

        猜你喜欢
        • 2020-10-21
        • 1970-01-01
        • 2017-12-31
        • 2019-10-16
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        • 1970-01-01
        • 2022-10-07
        相关资源
        最近更新 更多