1分鐘讀完《我希望在深入 React 之前知道這些》

justjavac發表於2017-11-01

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

  • 在一個已掛載元件接收新 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 之前知道這些

如果你想參與討論,請點選這裡

相關文章