概念:hook是react16.8新增特性。它可以讓你在不編寫class的情況下使用state以及其他的React特性。
一.useState
說明:useState---組件狀態管理鉤子
useState使函數組件能夠使用state
1.基本使用規則
const [state, setState] = useState(initState);
·state是要設置的狀態
·setState是更新state的方法
·initState是初始的state,可以是隨意的數據類型,也可以是回調函數,但是函數必須是有返回值。
2.案例
二.useEffect
說明:
useEffect是副作用處理的鉤子,數據獲取、訂閱、定時執行、手動修改ReactDOM這些行爲
useEffect也是componentDidMount、componentDidUpdate和componentWillUnmount這幾個生命週期方法的統一
1.基本使用
useEffect(callback, array)
參數callback:
回調函數,作用是處理副作用邏輯,callback可以返回一個函數,用作清理
參數array【可選】:
數組,用於控制useEffect的執行。
空數組,只會執行一次(即初次渲染render),相當於componentDidMount
非空數組,useEffect會在數組發生改變後執行
不填array這個數組,useEffect組件每次渲染都會執行
1)不填array數組案例
2)案例(監控點擊事件,獲取座標,同時每次設置之後需要移除)
3)案例:控制useEffect的執行,修改前面兩個例子的代碼
a.設置成掛載和卸載的時候執行useEffect第二個參數設置成空數組
useEffect(()=>{...}, []);
在app.tsx中設置組件的卸載掛載
b.傳遞非空數組情況
用之前的這個案例進行設置
設置之後的,只監測age值發生變化纔會觸發:
多個值監測:
三.自定義Hook(useMousePosition)
說明:該自定義的hook是參考獲取定位組件案例的【PS:監控事件改成鼠標滑動了。】
定義useMousePosition.tsx
調用:在app.tsx中引入
import useMousePosition from './components/useMousePosition';
效果展示:
四.自定義hook(useURLLoader)
說明:該自定義hook是結合axios完成load加載效果,即發起請求獲取數據時顯示加載中狀態。
定義useURLLoader.tsx