react中獲取state的方法-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)react中獲取state的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比巴馬網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式巴馬網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋巴馬地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

react中獲取state的方法:首先打開相應(yīng)的react代碼文件;然后在react中可以通過“this.state.{屬性}”的方式直接獲取state即可。

react中獲取state的方法

react中怎么獲取state?

在react中可以通過this.state.{屬性}的方式直接獲取state,但是當(dāng)我們修改state的時(shí)候,往往有許多的坑需要注意。

以下為三種常見的陷阱:

1、不能直接修改state。

組件修改state,并不會(huì)重新觸發(fā)render。列如:

//錯(cuò)誤
this.state.title='React';
正確修改方式是使用setState();
//正確
this.setState({title:'React'});

2、state的更新時(shí)異步的

調(diào)用setState時(shí),組件state并不會(huì)立即改變,只是把要修改的狀態(tài)放入事件隊(duì)列當(dāng)中,而react會(huì)優(yōu)化真正的執(zhí)行時(shí)機(jī),并且處于本身的性能原因,可能會(huì)將多次setState的狀態(tài)修改合并成一次狀態(tài)修改。因此不要依靠當(dāng)前的state計(jì)算下一個(gè)state,因?yàn)楫?dāng)真正執(zhí)行狀態(tài)修改時(shí),依賴的this.state并不能保證是新的state,因?yàn)閞eact本身會(huì)把多次state合并成一次,這時(shí)this.state還是幾次state修改前的state,同樣也不能依賴當(dāng)前的props計(jì)算下一個(gè)狀態(tài),因?yàn)閜rops的更新也是異步。列對(duì)于電商類的應(yīng)用中,在購(gòu)物車?yán)铮c(diǎn)擊一次購(gòu)買按鈕,購(gòu)買數(shù)量會(huì)加1,如果連續(xù)點(diǎn)擊兩次,會(huì)加2,而在react合并修改為一次的情況下,相當(dāng)與執(zhí)行了如下代碼:

Object.assign(
previousState,
{quantity:this.state.quantity+1},
{quantity:this.state.quantity+1},
)

于是后面覆蓋前面的操作,最終購(gòu)買數(shù)量只加1,此時(shí)可以使用另一個(gè)函數(shù)作為參數(shù)的setState,這個(gè)函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是當(dāng)前的新狀態(tài)(本次組件狀態(tài)更新后的狀態(tài))的前一個(gè)狀態(tài)preState(本次組件狀態(tài)修改前的狀態(tài)),第二個(gè)參數(shù)是當(dāng)前新的props。示列如下:

//正確
this.setState((preState,props)=>({
counter:preState.quantity+1
}))

3、state的更新時(shí)一個(gè)合并的過程

當(dāng)調(diào)用ssetState()修改組件的狀態(tài)時(shí),只需要傳入發(fā)生改變的state,而不是完整的state,因?yàn)榻M件state的更新時(shí)一個(gè)合并的過程,列如,一個(gè)組件的狀態(tài)為:

this.state({
title:'React',
content:'React is an wondeful JS library'
})

當(dāng)只需要修改title時(shí),只需要將修改的title傳給setState即可:

this.setState({title:'ReactJs'});

react會(huì)合并新的title到原來的狀態(tài),同時(shí)保留原來狀態(tài)的content,最終合并state為:

this.state({
title:'ReactJs,
content:''React is an wondeful Js library
}

關(guān)于“react中獲取state的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

本文標(biāo)題:react中獲取state的方法-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://muchs.cn/article44/psohe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化做網(wǎng)站、標(biāo)簽優(yōu)化網(wǎng)站導(dǎo)航、軟件開發(fā)、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司