網(wǎng)站首頁 編程語言 正文
useEffect
1.useEffect的介紹
- 引用官網(wǎng)的一句話就是:useEffect 就是一個 Effect
Hook
,給函數(shù)組件增加了操作副作用的能力。(你之前可能已經(jīng)在 React 組件中執(zhí)行過數(shù)據(jù)獲取、訂閱或者手動修改過 DOM。我們統(tǒng)一把這些操作稱為“副作用”,或者簡稱為“作用”。) -
可
以在組件內(nèi)多次調(diào)用
- React 會在
每次渲染
后調(diào)用副作用函數(shù) —— 包括第一次渲染
的時候。 - 副作用函數(shù)還可以通過返回一個函數(shù)來指定如何
“清除”
副作用。 - React 會在組件卸載的時候執(zhí)行清除操作。
- 它的第二個參數(shù)為數(shù)組:僅在數(shù)組(定義的第二個參數(shù))里面各項有一項發(fā)生變化的情況才會觸發(fā)當(dāng)前的 userEffect ,否則不觸發(fā)。
2.基本使用
2-1.基本使用
useEffect不傳遞第二個參數(shù)會導(dǎo)致每次渲染都會運行useEffect。然后,當(dāng)它運行時,它獲取數(shù)據(jù)并更新狀態(tài)。然后,一旦狀態(tài)更新,組件將重新呈現(xiàn),這將再次觸發(fā)useEffect,這就是問題所在。
useEffect(()=>{undefined
console.log(props.number)
setNumber(props.number)
}) //所有更新都執(zhí)行
2-2 傳遞空數(shù)組
當(dāng)?shù)诙€參數(shù)為空數(shù)組時,僅在掛載與卸載時觸發(fā)
useEffect(()=>{undefined
console.log(props)
},[]) //僅在掛載和卸載的時候執(zhí)行
2-3 傳遞一個值
當(dāng)參數(shù)為一個值,類比于Vue中的監(jiān)聽器,當(dāng)該值發(fā)生變化時,才會調(diào)用useEffect函數(shù)
useEffect(()=>{undefined
console.log(count)
},[count]) //count更新時執(zhí)行
2-4 傳遞多個值
useState返回的setter 不會在每次渲染時重新創(chuàng)建,因此只會運行一次
const Asynchronous : React.FC=({number})=>{undefined
const [number2,setNumber2] = useState(number);
useEffect(()=>{undefined
console.log(number)
setNumber2(number)
},[number,setNumber2]) //監(jiān)聽props對象number的更改
//setNumber2是useState返回的setter,所以不會在每次渲染時重新創(chuàng)建它,因此effect只會運行一次
}
2-5 傳遞props的對象 傳遞的useState返回的setter
2-6 return
return中的函數(shù) 會在組件銷毀時被調(diào)用 相當(dāng)于componentWillUnMount
類似Vue中的onDestroy
const timer = setInterval(() => {undefined
setCount(count + 1)
}, 1000)
// useEffect方法的第一個參數(shù)是一個函數(shù),函數(shù)可以return一個方法,這個方法就是在組件銷毀的時候會被調(diào)用
useEffect(() => {undefined
return () => {undefined
clearInterval(timer)
}
}, [])
原文鏈接:https://blog.csdn.net/owo_ovo/article/details/133441282
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-03-30 C語言代碼實現(xiàn)猜數(shù)字游戲_C 語言
- 2022-06-20 基于C#實現(xiàn)語音識別功能詳解_C#教程
- 2022-02-27 Uncaught (in promise) Error: Redirected when going
- 2022-09-29 C++?Vector迭代器失效問題的解決方法_C 語言
- 2022-06-22 Android實現(xiàn)精美的聊天界面_Android
- 2023-04-24 python讀取相對路徑和絕對路徑的方法_python
- 2022-04-28 基于OpenCV實現(xiàn)視頻循環(huán)播放_python
- 2022-05-14 實現(xiàn)AJAX異步調(diào)用和局部刷新的基本步驟_AJAX相關(guān)
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支