【React】redux中同步的action是异步更新state的?!?

我遇到了如下的问题

this.props.dispatch(updateState(key, value))

// 状态没有更新

setTimeout(() => // 状态发生了更新)

我在stackoverflow看到了同样的问题,链接如下

https://stackoverflow.com/que...

发现同步的action,dispatch后,state确实是异步更新的

我虽然找到了,解决的办法,通过componentWillReceiveProps, 监听props上属性的变化

 componentWillReceiveProps(nextProps){

if(nextProps.value!==this.props.value){alert(nextProps.value)}

}

但是我还是有一个疑问,redux文档上有这样一段代码,
【React】redux中同步的action是异步更新state的?!?

如果同步的action的dispath是异步更新的,那么这段代码岂不是有隐患????如果前一个dispath还没有更新状态。。。。。

回答

和你理解的相反,从发送action到redux内的state更新这一过程是同步的,具体可参考同步数据流

那么为什么在具体体现上是异步的呢,其实是由于React的setState是异步。你可以通过React的Devtools观察到,通过react-redux连接器封装后的组件,其实就是在组件外层包了一层高阶组件。而这一个高阶组件在redux里的state更新时会调用setState。所以,整个过程就会呈现异步的形式。

那么自然的,下面那个隐患也就不存在了。

我也遇到遇到和你一样的问题了,只能用componentWillReceiveProps来做监听?

以上是 【React】redux中同步的action是异步更新state的?!? 的全部内容, 来源链接: utcz.com/a/77441.html

回到顶部