1. useState: 返回的一個變量,因爲js 是單線程的當useState被調用時,就是當前組件的useState, 當一個組件有多個useState的時候,返回是根據傳入的順序來返回的
2. useEffect: 是 (cmoponentDidMount和componentDidUpdate和 componentWillUnmout)的集合,在渲染後執行,useEffect(回調函數,數組)
1. 第二個參數不傳,所有更新都會執行 2. 傳遞[],僅在掛載和卸載的時候執行 3. [name,...arg],在name,或其它參數更新時執行
2. 第一個參數有返回函數的時候在組件銷燬的時候執行
3. useContext:
1.導入並調用createContext方法,得到Context對象 import { createContext } from 'react' export const Context = createContext() 2.使用 Provider 組件包裹根組件,並通過 value 屬性提供要共享的數據 return ( <Context.Provider value={ 傳遞的數據 }> <根組件的內容,這裏面都可以獲取到context傳遞的值/> </Provider> ) 3.在任意後代組件中,獲取公共數據 import React, { useContext } from 'react' import { Context } from './某個文件' const 函數組件 = () => { const 公共數據 = useContext(Context) return ( 函數組件的內容 ) }
4. useRef
1. 返回一個ref對象,該對象只有一個current屬性,初始值爲傳入的參數(initValue)
2. 當更新current的值,並不會render,這是與useState不同點
3. 返回的ref對象在整個組件生命週期內保持不變
4. useRef 類似於組件的this
使用場景: 1. 獲取組件的實例 2 需要保存上一次的共享數據