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...