React中使用setState
生活随笔
收集整理的這篇文章主要介紹了
React中使用setState
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不要直接修改 State
state數據不能直接修改,必須要通過setState來修改。但是設置值的時候不能影響到之前state的值,舉個栗子:
處理數組時不要使用push pop splice等方式,處理對象時不要直接對this.state.obj進行屬性設置,因為這樣違反不要直接修改state原則。
setState更新可能是同步也可能是異步
出于性能考慮,React 可能會把多個 setState() 調用合并成一個調用。比如如下情況:
// 傳入對象,會被合并。雖然3次setState, 但count值最后只會加1 this.setState({counter: this.state.counter + 1 }) this.setState({counter: this.state.counter + 1 }) this.setState({counter: this.state.counter + 1 })此時this.state的更新就是異步更新了。那么有沒有辦法控制讓其同步更新呢?要解決這個問題,可以讓 setState() 接收一個函數而不是一個對象。這個函數用上一個 state 作為第一個參數,將此次更新被應用時的 props 做為第二個參數:
// 大括號包裹的箭頭函數寫return this.setState((preState, props) => {return {counter: preState.counter + 1} }) // 小括號包裹的箭頭函數不用寫return this.setState((preState, props) => ({counter: preState.counter + 1 })) // 普通函數形式 this.setState(function(preState, props) {return {counter: preState.counter + 1} })這樣的話,this.state就可以保持同步更能,最后顯示的counter值是3而不是1了。
State 的更新會被合并
在講setState更新可能是同步也可能是異步的時候已經講啦。
參考資料
[1] 正確地使用 State
總結
以上是生活随笔為你收集整理的React中使用setState的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode快捷操作
- 下一篇: 如何使用React Hook