目錄javascript
因爲 React 的版本更新頻繁,各種的新特性也是讓人眼花繚亂的,爲了方便本身查詢最新的以及過往的 各個 React 版本 api、生命週期函數。 這裏就用 caniuse 的方式作一個 方便查詢的小功能。html
那麼要實現這個小功能以前,咱們必需要對 React 的各類版本進行仔細的解讀。 最快捷的方式就是 直接 經過官方文檔來獲取最真實的信息。
React 版本 各個階段 API | Mounting(綁定) | Updating(數據更新) |
---|---|---|
V 16.0.0 | constructor() componentWillMount() render() componentDidMount() |
componentWillReceiveProps() shouldComponentUpdate() componentWillUpdate() render() componentDidUpdate() |
V 16.3.2 | constructor() static getDerivedStateFromProps() componentWillMount() / UNSAFE_componentWillMount() render() componentDidMount() |
componentWillReceiveProps() / UNSAFE_componentWillReceiveProps() static getDerivedStateFromProps() shouldComponentUpdate() componentWillUpdate() /UNSAFE_componentWillUpdate() render() getSnapshotBeforeUpdate() componentDidUpdate() |
V 16.5.2 | constructor() static getDerivedStateFromProps() render() componentDidMount() |
static getDerivedStateFromProps() shouldComponentUpdate() render() getSnapshotBeforeUpdate() componentDidUpdate() |
V 16.7.0(最新) | constructor() static getDerivedStateFromProps() render() componentDidMount() |
static getDerivedStateFromProps() shouldComponentUpdate() render() getSnapshotBeforeUpdate() componentDidUpdate() |
1-一、About
Components
java
一、Components let you split the UI into independent, reusable pieces, and think about each piece in isolation 組件容許您將UI拆分爲獨立的、可重用的部分,並獨立地考慮每一個部分
二、Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called 「props」) and return React elements describing what should appear on the screen. 從概念上講,組件相似於JavaScript函數。它們接受任意輸入(稱爲「props」),並返回描述屏幕上應該出現的內容的React元素。
1-二、Component's presentation (展示形式)react
The simplest way to define a component is to write a JavaScript function:
(最簡單的方式)git
function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
You can also use an ES6 class to define a component:
(你也可使用 ES2015 中 類 的方式)github
class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }
上面的二種寫法,目前來看是
等價的
.ajax
任何都 React 版本,關於 Lifecycle 咱們均可以找到對應的幾個狀態,來進行不一樣的 api 的差別的對比。這樣也是方便,咱們進行記憶的。api
官方文檔傳送門:
React V 16.0.0 官方文檔瀏覽器
constructor()
服務器
例如:
constructor(props) { super(props); this.state = { color: props.initialColor }; }
componentWillMount()
render()
如下類型:
React elements
、String and numbers
、 Portals
、null
當 render null、 false、ReactDOM.findDOMNode(this) 的時候會返回 null
componentDidMount()
componentWillReceiveProps()
componentWillReceiveProps(nextProps)
shouldComponentUpdate()
shouldComponentUpdate(nextProps, nextState)
componentWillUpdate()
componentWillUpdate(nextProps, nextState)
componentDidUpdate()
componentDidUpdate(prevProps, prevState)
componentWillUnmount()
componentDidCatch()
componentDidCatch(error, info)
錯誤邊界是響應組件,這些組件捕捉子組件樹中的任何位置的JavaScript錯誤,記錄這些錯誤,並顯示一個回退UI,而不是崩潰的組件樹。錯誤邊界在呈現、生命週期方法和下面整個樹的構造函數中捕獲錯誤。
若是類組件定義了這個生命週期方法,它就會成爲一個錯誤邊界。在其中調用setState()容許您在下面的樹中捕獲未處理的JavaScript錯誤並顯示回退UI。只使用錯誤邊界從意外異常中恢復;不要試圖用它們來控制流程。
可能就會有同窗問了,爲啥 第二部分的內容不講了?
答: 這真的沒什麼好講的。
以上則是 React V16.0.0 的所有內容,歡迎你們一塊兒討論~後面還有 關於剩下版本的 apis 變化的介紹,
主要是以 爲何 react 開發組要 幹掉這些 api 以及 新的 api 能解決什麼問題爲出發點。介紹 ReactJS 這些年的進化
幫助你們一塊兒來走進這個框架。
GitHub
地址:(歡迎 star 、歡迎推薦 : )