Redux 不会立即更新状态

IT技术 javascript reactjs redux react-redux
2021-05-05 03:19:32

我对 Redux 有问题,更可能不是问题而是误会。如果我确实在函数中调度并在商店中写入一个新值,那么我无法立即从商店中获取该函数的新值。

例子:

    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

在此处输入图片说明

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

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

1个回答

setState不是同步的,无论是你还是 Redux 更新它。

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

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

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

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