Hooks 是 React 16.8的新特性。使用Hooks,咱們不用去寫Class也能使用state,還有一些其餘的React特性。html
import React, { useState } from 'react';
function Example() {
// 在這裏咱們聲明瞭一個新的state變量,叫count
const [count, setCount] = useState(0);
return (
<div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}> Click me </button> </div>
);
}
複製代碼
useState是咱們第一個接觸到的Hook,沒看懂這個例子也不要緊。後面會繼續介紹。react
你能夠在下一頁直接開始學習Hooks。在這篇文章中,咱們將會介紹爲何要引入Hooks,以及如何使用Hooks幫助咱們更好的編寫組件。git
Notegithub
React 16.8.0是第一個支持Hooks的版本。升級時,不要忘記更新全部包,包括React DOM。 React Native將在下一個穩定版本中支持Hook。ide
在React Conf 2018中,Sophie Alpert和Dan Abramov介紹了Hooks,隨後Ryan Florence演示瞭如何重構應用程序以使用它們。觀看視頻:函數
Hooks是測試
解決了不少問題。好比:優化
React沒有提供將可複用的行爲(reusable behavior)附加到組件上的方法,好比鏈接一個store。ui
Hooks的優點:
能夠把有關state的邏輯從組件中抽離出來,而且不改變組件的層級結構。這樣對代碼的複用和測試都更友好。
We’ll discuss this more in Building Your Own Hooks.
組件剛開始寫很簡單,可是有關state的邏輯和反作用越寫越多,組件就變得難以管理
由於組件裏面有關state的邏輯處處都是,因此不少狀況下咱們沒法將組件拆分紅更小的組件,而且這樣也不利於測試。這就是不少人更喜歡將React和單獨的狀態管理的庫結合的緣由之一。
Hook的優點:
能夠將組件基於邏輯的關聯性拆分紅更小的函數,好比說訂閱消息、獲取數據之類的,而不是基於生命週期拆分相關邏輯。你也能夠經過一個reducer來管理組件的內部state
class語法讓人疑惑,好比下面這幾個方面:
因此咱們想要推出能讓代碼更優化的API。
Hook的優點:
class看起來很差,用Hook能夠不寫class
沒有從React中移除class的計劃
對於有好奇心的讀者,咱們準備了這篇來深刻更多的細節