React报错修复:“Uncaught TypeError: destroy is not a function”

报错:Uncaught TypeError: destroy is not a function at commitHookEffectListUnmount

如果你在useEffect函数中使用了async,运行后会出现该报错。

原理解析:

要知道,useEffect 钩子函数的一个特性是清理功能,即return函数。如果你从 useEffect 钩子函数返回任何东西,它必须是一个清理函数,此函数将在组件卸载时运行。相当于类组件中的 componentWillUnmount 生命周期方法。

在 JavaScript 中, async...await 会让程序在等待异步任务完成后才会继续执行。 异步函数也总是返回一个 Promise;如果函数还没有返回,则返回值会自动包装在 Promise 中。

那么我们要是这么写(错误示范),箭头函数直接指向就是返回值,就相当于是返回了一个promise函数了:

复制代码
const myFunc = async()=>{...};
useEffect(()=>myFunc(),[])

正确写法,在用箭头函数时加个花括号,什么都不返回:

复制代码
const myFunc = async()=>{...};
useEffect(()=>{ 
	myFunc();
},[])

修改后程序可正常执行。

相关推荐
jump_jump16 分钟前
深入 JavaScript Iterator Helpers:从 API 到引擎实现
javascript·性能优化
swipe30 分钟前
把 JavaScript 原型讲透:从 `[[Prototype]]`、`prototype` 到 `constructor` 的完整心智模型
前端·javascript·面试
问道飞鱼35 分钟前
【前端知识】React 组件生命周期:从底层原理到实践场景
前端·react.js·前端框架·生命周期
Dxy12393102161 小时前
JS发送请求的方法详解
开发语言·javascript·ecmascript
CHU7290351 小时前
定制专属美丽时刻:美容预约商城小程序的贴心设计
前端·小程序
浩~~1 小时前
反射型XSS注入
前端·xss
AwesomeDevin2 小时前
AI时代,我们的任务不应沉溺于与 AI 聊天,🤔 从“对话式编程”迈向“数字软件工厂”
前端·后端·架构
harrain2 小时前
antvG2折线图和区间range标记同时绘制
前端·javascript·vue.js·antv·g2
德育处主任Pro2 小时前
从重复搭建到高效生产,RollCode的H5开发新范式
前端
蜡台2 小时前
SPA(Single Page Application) Web 应用(即单页应用)架构模式 更新
前端·架构·vue·react·spa·spa更新