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

鍍金池/ 問(wèn)答/HTML/ react異步獲取的數(shù)據(jù),如何根據(jù)異步數(shù)據(jù)設(shè)置對(duì)應(yīng)的state合理?

react異步獲取的數(shù)據(jù),如何根據(jù)異步數(shù)據(jù)設(shè)置對(duì)應(yīng)的state合理?

描述: 比如異步獲取初始化數(shù)據(jù)為1,則設(shè)置state.isShow為true否則為false;
render函數(shù)里根據(jù)state.isShow設(shè)置是否渲染元素A,并渲染一個(gè)有click事件的元素B切換state.isShow

問(wèn)題: 比如我在componentWillUpdate里判斷異步獲取的初始化數(shù)據(jù)設(shè)置state.isShow為true,但是這樣我的click切換將會(huì)失效,因?yàn)槊看胃聲r(shí)都會(huì)根據(jù)初始化數(shù)據(jù)1設(shè)置state.isShow為true,我就必須在判斷異步數(shù)據(jù)之前加上if (this.state.isShow != nextState.isShow) return; 雖然這樣可以實(shí)現(xiàn),但是我感覺(jué)實(shí)現(xiàn)方式不夠簡(jiǎn)潔,如果有很多個(gè)類(lèi)似isShow我就要寫(xiě)好多個(gè)判斷。

想知道合理的實(shí)現(xiàn)方式是怎樣?應(yīng)該在哪個(gè)生命周期里判斷異步獲取的數(shù)據(jù)或者在接受到props傳來(lái)的異步數(shù)據(jù)后應(yīng)該怎樣做?

回答
編輯回答
獨(dú)白

componentWillUpdate是組件在非第一次即將render時(shí)執(zhí)行,所以componentWillUpdate不可能及時(shí)的獲取到的異步數(shù)據(jù)
異常數(shù)據(jù)的改變是props,所以應(yīng)該放在componentWillReceiveProps中。

根據(jù)你的描述呢,直接把isShow作為props放到render中就可以了。沒(méi)必要將props先轉(zhuǎn)化為state,再處理。因?yàn)?code>props改變時(shí),component也會(huì)render的。

2017年9月26日 11:53