一、useState
在React組件類中,聲明變量的方法是在constructor中this.state={ 變量名:值 },比如什么一個count變量,this.state={ count:0 },修改count的方法是this.setState({count:1})
在Hooks中,聲明一個變量的方法是:
const [ state, setState ] = useState( initialState )
state:你要聲明的變量
setState:修改state值的方法
initialState:傳入唯一的參數,可以是數字,字符串等,也可以是對象或者數組。
想要更改變量的值,直接setState(value)就可以實現。例如:setState(1),此時count的值為1。
想要展示count,不需要{this.state.count},直接{count}即可展示
完整的useState栗子如下:
兩種改變方式都可以,一般采用第二種簡便方式。
點擊前count的值為0:
點擊后count的值為1:
二、useEffect
之前很多具有副作用的操作,例如網絡請求,修改 UI 等,一般都是在 class
組件的 componentDidMount
或者 componentDidUpdate
等生命周期中進行操作。而在函數組件中因為沒有這些生命周期的概念,所以使用useEffect來執行副作用的操作。
useEffect的語法為:
useEffect有兩個參數,第一個參數是一個函數,是在第一次渲染以及之后更新渲染之后會進行的副作用。第二個參數是可選參數,是一個數組,數組中存放的是第一個函數中使用的某些副作用屬性。用來優化 useEffect。
簡單的栗子如下:
當我們每次點擊按鈕的時候,useEffect都會輸出一次count
如果我們只想讓count在每次組件渲染時的時候,輸出一次,這時候就要用到useEffect的第二個參數,將第二個參數設置為一個空數組[ ]。 這告訴React你的 useEffect 不依賴於來自 props 或 state 的任何值,所以它永遠不需要重新運行。此時只會輸出一次count,並不會因為點擊按鈕而一直輸出。
如果我們想在點擊按鈕的時候,也輸出count,這個時候就需要在第二個參數中加上count。這樣就可以一直輸出count
總的來說,根據不同的需求,設置useEffect的第二個參數。只想執行一次時,設置為空數組[]。需要根據某個變量改變時,就將該變量增加到數組中。當然,useEffect也可以寫多個,根據不同的情況分別管理你所寫的函數。舉個栗子:
如上圖,第一個useEffect會在每次組件渲染時執行,並且count和test改變的時候,再次執行。第二個useEffect只會在每次組件渲染時的時候,執行一次。