react使用setState注意事項

2021-08-21 16:52:18 字數 1182 閱讀 4087

react設計setstate方法就是為了重新渲染頁面

看看下面的**實現的結果:

state =

function

test()

);this

.setstate()

;this

.setstate()

;}test()

//發現最後value 是1,只加了一次

function

test1()

));this

.setstate

((state, props)

=>()

);this

.setstate

((state, props)

=>()

);}test1()

// 發現最後value 是3, 結果就如我們所意了

因為使用函式式setstate,react會保證每次呼叫函式時,state都已經合併了之前的狀態修改結果。

多次setstate會合併

前面我們了解到setstate並不會立即改變state的值,而是將其放到乙個任務佇列裡,最終將多個setstate合併,一次性更新頁面。所以我們可以在**裡多次呼叫setstate,每次只需要關注當前修改的字段即可。

多次setstate會合併為什麼會合併

主要是setstate觸發頁面重新渲染, 需要經過以下生命週期:

經過測試,其實state的值只有在render的時候才真正被修改了

// shouldcomponentupdate: 0

// componentwillupdate: 0

// render: 1

// componentdidupdate: 1

// shouldcomponentupdate: 1

// componentwillupdate: 1

// render: 2

// componentdidupdate: 2

// shouldcomponentupdate: 2

// componentwillupdate: 2

// render: 3

// componentdidupdate: 3

React中setState的使用與同步非同步

在react中,修改狀態如果直接使用this.state,不會引起元件的重新渲染,需要通過 this.setstate來對元件的屬性進行修改。1 this.setstate的兩種定義方式 定義初始狀態 state 如果此時有乙個按鈕,點選按鈕讓計數加1,我們可以有兩種寫法 1 傳遞物件 this.s...

react非同步setState簡單實現

直接主題,開始前先看一段demo class demo componentdidmount this.setstate this.setstate prevstate console.log this.state.count 0 10 render 在平常使用react的過程中,關於setstate...

react中state與setstate的使用

我們可以利用state來定義一些變數的初始值 放在construcor裡 this.state 要更改state裡的值,注意要遵循react裡immutable規範,state不允許我們做任何改變,只能通過setstate來更改 const list this state.list list.spl...