useState
的坑:
修改state后,如果直接調用此state,會發現state的值未發生改變。
當調用setState時,react是異步更新state的,如果setState后立即獲取state的值,此時state尚未更新,因此為舊的狀態。
useRef
總共有兩種用法:
1、獲取子組件的實例
2、在函數組件中的一個全局變量,不會因為重復 render
重復申明, 類似於類組件的 this.xxx
有些情況下,我們需要保證函數組件每次 render 之后,某些變量不會被重復申明,比如說 Dom 節點,定時器的 id 等等。
在類組件中,我們完全可以通過給類添加一個自定義屬性來保留,比如說 this.xxx, 但是函數組件沒有 this,我們就需要使用 useRef 來實現。
區別:
1、useState觸發重新渲染,useRef不觸發。
2、useState異步更新其值,useRef同步更新。