React setState詳解和React效能優化
阿新 • • 發佈:2021-01-02
技術標籤:React學習reactjavascripthtmlreactjs
為什麼要使用setState修改資料
- 原因就是希望通過修改了state之後,能夠使得React根據最新的state來重新渲染介面
setState非同步更新
- setState修改值之後不能立即訪問,值的更新是非同步的;
- 如果每次呼叫 setState都進行一次更新,那麼意味著render函式會被頻繁呼叫,介面重新渲染,這樣效率是很低的;
- 最好的辦法應該是獲取到多個更新,之後進行批量更新
- 如果同步更新了state,但是還沒有執行render函式,那麼state和props不能保持同步;
- state和props不能保持一致性,會在開發中產生很多的問題;
setState之後如何立即獲取到值呢?
兩種方法:
- 利用setState的回撥函式:
//方式一:獲取非同步更新後的資料
//setState(要更新的state物件,回撥函式)
this.setState({
message: "2021的征途是星辰大海"
},() => {
console.log(this.state.message);
})
- 利用生命週期函式componetDidUpdate
componentDidUpdate() {
console. log("componentDidUpdate",this.state.message)
}