網(wǎng)站首頁 編程語言 正文
react報錯:Can’t perform a React state update on an unmounted component. This is a no-op, but it indica
作者:田本初 更新時間: 2023-10-12 編程語言報錯
Can’t perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
分析
這是由于請求接口數(shù)據(jù)加載比較慢,setState還未完成,用戶切換了組件或者切換頁面時候,此時組件已被卸載,仍然嘗試修改組件的狀態(tài)所導(dǎo)致的問題。在組件被卸載后,setState動作還在持續(xù),但此時無法使用setState來改變組件的狀態(tài),這會導(dǎo)致React引擎出現(xiàn)內(nèi)存泄漏警告。
解決
為了解決這個問題,應(yīng)該在組件卸載時,清除所有的異步任務(wù)和訂閱,可以使用useEffect的清理函數(shù)來完成這個任務(wù)。在清理函數(shù)中取消所有正在進行的異步任務(wù)。
函數(shù)式組件寫法
useEffect(() => {
const fetchData = async () => {
const result = await axios.get('api/data')
setData(result.data)
}
fetchData()
return () => {
// 在組件卸載后取消異步任務(wù)
if (source) {
source.cancel('Component unmounted')
}
}
}, [])
類組件寫法
componentWillUnmount() {
this.setState = () => false
}
原文鏈接:https://blog.csdn.net/owo_ovo/article/details/132468119
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-12-05 Linux中的grep?-v、-e、-E用法小結(jié)_linux shell
- 2022-10-29 tensorflow2數(shù)據(jù)讀取P2: tf.data.Dataset.from_generator通
- 2022-10-24 Android性能優(yōu)化之ViewPagers?+?Fragment緩存優(yōu)化_Android
- 2022-05-13 windwos11 小愛音箱鏈接上但是沒有聲音
- 2022-10-17 多階段構(gòu)建優(yōu)化Go?程序Docker鏡像_Golang
- 2022-06-30 Oracle中游標(biāo)Cursor的用法詳解_oracle
- 2022-08-08 Android實現(xiàn)頁面跳轉(zhuǎn)_Android
- 2022-10-06 Go語言實現(xiàn)常用排序算法的示例代碼_Golang
- 欄目分類
-
- 最近更新
-
- 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被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支