詳解React中setState回撥函式
阿新 • • 發佈:2018-11-22
使用React過程中,中可以使用this.state來訪問需要的某些狀態,但是需要更新或者修改state時,一般而言,我們都會使用setState()函式,從而達到更新state的目的,setState()函式執行會觸發頁面重新渲染UI。但是呢,setState是非同步的!這就難受。
1. 語法:
setState(updater[, callback]) //
updater是要改變的state物件,callback是state導致的頁面重新渲染的回撥,等價於componentDidUpdate
一般而言,在設定頁面某些state的時候,需要先設定好state,然後再對頁面的一些引數進行修改的時候,可以使用setState的回撥函式。
2. 分析一下區別
不在回撥中使用引數,我們在設定state後立即使用state:
this.state = {foo: 1};
this.setState({foo: 123});
console.log(this.state.foo);
// 1
//歡迎加入全棧開發交流圈一起學習交流:864305860
在回撥中呼叫設定好的state
this.state = {foo: 2};
this.setState({foo: 123}, ()=> {
console.log(foo);
// 123
});//歡迎加入全棧開發交流圈一起學習交流:864305860
關於setState的回撥函式的作用大概如此,這個函式相當於componentDidUpdate函式,和生命週期的函式類似。
3. 注意:
- setState是非同步的!不保證資料的同步。
- setState更新狀態時可能會導致頁面不必要的重新渲染,影響載入。
- setState管理大量元件狀態也許會導致不必要的生命週期函式鉤子呼叫。
本次給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入Q群:864305860,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。