Canberk Morelli 是 OpsGenie 的一名前端工程師,正在使用 React 構建公司內部專案。通過這篇文章可以使初學者不要犯同樣的錯誤。
1、每次呼叫 setState
都會引起元件的重新渲染 re-render
每次state 改變或者傳入新的 props 都會呼叫 shouldComponentUpdate
。
shouldComponentUpdate
預設返回 true
,開發者可以根據自己的邏輯決定是否返回 false
。
注意:
不正確的
shouldComponentUpdate
邏輯可能引發錯誤:應該渲染的時候沒有渲染,或者不應該渲染的時候卻渲染了在
shouldComponentUpdate
進行復雜的判斷容易引發效能問題,可以通過 React’s Performance Tools 來查詢。
2、setState
對狀態的改變是非同步的
呼叫 setState
後,元件的 state
並不會立即改變。
一個經常犯的錯誤就是在 setState
後馬上使用 this.state
。
setState
還有另一種用法:setState(updater, [callback])
,通過傳遞一個函式 updater
。
第 2 個引數是修改完狀態後的回撥,但是不推薦在這裡寫業務邏輯,一個比較不錯的地方是寫到 componentDidUpdate
函式裡。
3、元件生命週期很重要
生命週期大概分為 3 類:
掛載:元件被建立並插入到 DOM
更新:元件正在重新渲染,一般是由 props 或 state 的改變引起的
解除安裝:元件從 DOM 上移除
4、componentWillReceiveProps
的使用
當元件的 props 改變時需要更新 state時使用這個方法。
注意:
即使 props 沒有改變,也會呼叫
componentWillReceiveProps
,因此需要在函式內部比較this.props
和nextProps
在一個已掛載元件接收新 props 前,
componentWillReceiveProps
被呼叫,因此在掛載階段是不會呼叫componentWillReceiveProps
的
5、使用 React Developer Tools
React Developer Tools 可以更方便的除錯 React 應用。
6、使用 Create React App
官方推出的 Create React App 讓開發者已零配置的方式快速建立 React 應用。
閱讀原文:I wish I knew these before diving into React
討論地址:我希望在深入 React 之前知道這些
如果你想參與討論,請點選這裡