在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Linux  HTML/ redux中同步的action是異步更新state的????

redux中同步的action是異步更新state的????

我遇到了如下的問題

this.props.dispatch(updateState(key, value))
// 狀態(tài)沒有更新
setTimeout(() => // 狀態(tài)發(fā)生了更新)

我在stackoverflow看到了同樣的問題,鏈接如下

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

發(fā)現(xiàn)同步的action,dispatch后,state確實是異步更新的

我雖然找到了,解決的辦法,通過componentWillReceiveProps, 監(jiān)聽props上屬性的變化

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

但是我還是有一個疑問,redux文檔上有這樣一段代碼,
圖片描述

如果同步的action的dispath是異步更新的,那么這段代碼豈不是有隱患????如果前一個dispath還沒有更新狀態(tài)。。。。。

回答
編輯回答
氕氘氚

和你理解的相反,從發(fā)送action到redux內(nèi)的state更新這一過程是同步的,具體可參考同步數(shù)據(jù)流。

那么為什么在具體體現(xiàn)上是異步的呢,其實是由于React的setState是異步。你可以通過React的Devtools觀察到,通過react-redux連接器封裝后的組件,其實就是在組件外層包了一層高階組件。而這一個高階組件在redux里的state更新時會調(diào)用setState。所以,整個過程就會呈現(xiàn)異步的形式。

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

2017年1月24日 23:05