react擴充套件 三個常用的hook
阿新 • • 發佈:2021-07-28
1.setstate兩種方式
1.1 物件式state setstate(stateChange,[callback])stateChange是一個物件,物件裡面可以修改state裡面有的屬性值,callback可以拿到修改過後的值進行操作,callback是可選的回撥函式,它在狀態更新完畢、介面也更新後(render呼叫後)才被呼叫
1.2 函式式state setstate(updateState,[callback]),updateState是一個函式,會將此時的state和props傳進來,callback的作用如上,如果此時需要修改的state依賴之前的state,可以用函式式state
1. React Hook/Hooks是什麼?(1). Hook是React 16.8.0版本增加的新特性/新語法
(2). 可以讓你在函式元件中使用 state 以及其他的 React 特性
state hook React.useState
let [xxx,setxxx]=usestate(初始值)
(1). State Hook讓函式元件也可以有state狀態, 並進行狀態資料的讀寫操作 (2). 語法: const [xxx, setXxx] = React.useState(initValue) (3). useState()說明: 引數: 第一次初始化指定的值在內部作快取(
隨著對狀態的更改,demo呼叫1+n次,初次算一次,後續呼叫n次,第一次呼叫react底層存下xxx的初始值,後面n次呼叫,useState
不會對xxx的值進行覆蓋處理
)
返回值: 包含2個元素的陣列, 第1個為內部當前狀態值, 第2個為更新狀態值的函式 (4). setXxx()2種寫法: setXxx(newValue): 引數為非函式值, 直接指定新的狀態值, 內部用其覆蓋原來的狀態值 setXxx(value => newValue): 引數為函式, 接收原本的狀態值, 返回新的狀態值, 內部用其覆蓋原來的狀態值
Effect hook React.useEffect(可以實現生命週期的作用,掛載以後,更新以後都在執行)
(1). Effect Hook 可以讓你在函式元件中執行副作用操作(用於模擬類元件中的生命週期鉤子) (2). React中的副作用操作: 發ajax請求資料獲取 設定訂閱 / 啟動定時器 手動更改真實DOM (3). 語法和說明: useEffect(() => { // 在此可以執行任何帶副作用操作 return () => { // 在元件解除安裝前執行 // 在此做一些收尾工作, 比如清除定時器/取消訂閱等 } }, [stateValue]) // 如果指定的是[], 回撥函式只會在第一次render()後執行,空陣列代表誰也不監測,只在第一次掛載的時候執行,
其餘時候stateValue有改變就會執行,不寫第二個引數代表都監測,監測所有,只要有改變就監測 (4). 可以把 useEffect Hook 看做如下三個函式的組合 componentDidMount()(第二個引數為[]) componentDidUpdate()(第二個引數為一個有state的[]) componentWillUnmount() (useEffect的第一個引數是一個函式,這個函式返回的函式就相當於componentWillUnmount()
)
Ref hook React.useRef(類似React.createRef(),也是一對一,專用)
(1). Ref Hook可以在函式元件中儲存/查詢元件內的標籤或任意其它資料 (2). 語法: const refContainer = useRef() (3). 作用:儲存標籤物件,功能與React.createRef()一樣
是一個容器,定義容器,然後再標籤裡面用ref繫結,使用的時候是一樣的1,除了函式元件沒有自己的this