React Hooks的useState和useEffect


一、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(() => {
      doSomething
    }, [input])

   useEffect有兩個參數,第一個參數是一個函數,是在第一次渲染以及之后更新渲染之后會進行的副作用。第二個參數是可選參數,是一個數組,數組中存放的是第一個函數中使用的某些副作用屬性。用來優化 useEffect。

  簡單的栗子如下:

  

 

 

   當我們每次點擊按鈕的時候,useEffect都會輸出一次count

  

  如果我們只想讓count在每次組件渲染時的時候,輸出一次,這時候就要用到useEffect的第二個參數,將第二個參數設置為一個空數組[ ]。 這告訴React你的 useEffect 不依賴於來自 props 或 state 的任何值,所以它永遠不需要重新運行。此時只會輸出一次count,並不會因為點擊按鈕而一直輸出。

  

 

 

   如果我們想在點擊按鈕的時候,也輸出count,這個時候就需要在第二個參數中加上count。這樣就可以一直輸出count

  

 

 

   總的來說,根據不同的需求,設置useEffect的第二個參數。只想執行一次時,設置為空數組[]。需要根據某個變量改變時,就將該變量增加到數組中。當然,useEffect也可以寫多個,根據不同的情況分別管理你所寫的函數。舉個栗子:

  

 

   如上圖,第一個useEffect會在每次組件渲染時執行,並且count和test改變的時候,再次執行。第二個useEffect只會在每次組件渲染時的時候,執行一次。

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM