(React+TypeScript實戰篇)二.ReactHook

概念: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

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章