javascript - Redux 不会立即更新状态

标签 javascript reactjs redux react-redux

我对 Redux 有疑问,更可能不是问题而是误解。 如果我在函数中进行分派(dispatch)并在存储中写入新值,那么我无法立即从存储中获取该函数的新值。

示例:

    testFunc = () => {
        console.log('in func: before', this.props.count);   //state store
        this.props.onButtonIncrementClick();                //dispatch a new state in the store
        console.log('in func: after', this.props.count);    //get the old state store
    };

实例: https://codesandbox.io/s/yk1jzjv6l1

enter image description here

我怀疑这与异步有关,因为如果我将状态包装在 setTimeout() 中,就会出现一个新状态。

我很高兴听到关于为什么以及如何将值写入存储并立即从中读取它们的解释。

最佳答案

setState is not synchronous ,无论是你还是 Redux 更新它。

正如你所说,这是一个误解。当您直接更新它时,您可以提供要执行的回调,例如,

setState({ foo }, () => somethingWith(this.state));

(请注意,组件在回调之前已重新渲染。)

如果您有需要在“外部”状态更新(例如 Redux)后运行的逻辑,那么可以使用 componentDidUpdate,但它也可能表明存在架构问题。

关于javascript - Redux 不会立即更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51247040/

相关文章:

javascript - 如何在express服务器中添加动态路由?

javascript - 在可见的 HTML 表格行上交替背景颜色的最快方法

javascript - CKEditor 4 处于只读模式 - 删除按钮会删除格式

html - 正确显示自动完成下拉列表的问题

javascript - 使用 ReactJS 将数据从一个组件传递到另一个组件

javascript - 单击“喜欢”图标会增加其他组件的“喜欢”数量

javascript - Uncaught ReferenceError : ReservationCard is not defined

javascript - Fabric.js : changing originX in ellipse changes left position

javascript - FrameId 未定义

javascript - 尝试使用 Chart Js 和 React 导出图表但出现错误