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

鍍金池/ 問答/HTML5  HTML/ setState 為什么是異步的

setState 為什么是異步的

為什么setState是異步的

回答
編輯回答
貓小柒

如果是同步的話,碰到開發(fā)者高頻率調(diào)用setState方法,比如在一個回調(diào)函數(shù)中調(diào)用多個函數(shù),每個函數(shù)都調(diào)用一次setState,React會頻繁渲染,性能和體驗(yàn)都很差,所以采用了異步更新的方式,將數(shù)次變動集中起來更新。

避免這個異步更新問題的方法有兩種,一是采用樓上說的回調(diào)函數(shù),二是setState傳入一個函數(shù),如下

this.setState(prevState=>({
    ...prevState,
    [propYouWantToChange]:valueYouWantToChange
}))

這個prevState每次都是新的,前提是在之前你沒有通過setState({})的方式改變過相關(guān)的屬性

2017年4月20日 03:40
編輯回答
毀與悔

是異步的呀,但是有回調(diào)函數(shù)的,你想得到改變后的可以

this.setState({xxxxx},function(){
//查看改變后的值
})
2018年5月20日 06:07
編輯回答
心癌

貌似一直是異步的。。。

update:異步與同步區(qū)別是,異步不需要等待當(dāng)前作用域函數(shù)的執(zhí)行,而是到當(dāng)前作用域的同步任務(wù)都執(zhí)行完畢之后,在執(zhí)行異步的結(jié)果(而異步本身又有宏任務(wù)和微任務(wù)的區(qū)別,其實(shí)更推薦你去看異步的概念,而不限于react這里),好處自然是使你當(dāng)前的同步j(luò)s不會被阻塞,避免你react改變狀態(tài)時,開銷太大,又要去等待他執(zhí)行完畢,帶來不好的用戶體驗(yàn)。

2018年9月18日 01:06
編輯回答
喜歡你

都是異步的,沒有同步的時候

2017年7月15日 03:10