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();
},[])

修改后程序可正常执行。

相关推荐

  1. React 开发整理

    2024-02-12 07:08:03       35 阅读
  2. react怎么做图片处理

    2024-02-12 07:08:03       31 阅读
  3. React 项目解决办法收录

    2024-02-12 07:08:03       43 阅读
  4. 修复Jenkins fossa扫描的时候的问题

    2024-02-12 07:08:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-12 07:08:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-12 07:08:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-12 07:08:03       87 阅读
  4. Python语言-面向对象

    2024-02-12 07:08:03       96 阅读

热门阅读

  1. RequestAndResponse(个人简陋笔记)

    2024-02-12 07:08:03       40 阅读
  2. 神经语言程式(NLP)项目的15 个开源训练数据集

    2024-02-12 07:08:03       56 阅读
  3. 设计模式-观察者模式 Observer

    2024-02-12 07:08:03       45 阅读
  4. Python语言例题集(003)

    2024-02-12 07:08:03       52 阅读
  5. 创建一个多进程服务器和多线程服务器

    2024-02-12 07:08:03       45 阅读
  6. Edge浏览器-常用快捷键

    2024-02-12 07:08:03       49 阅读
  7. 设计模式--桥接模式(Bridge Pattern)

    2024-02-12 07:08:03       56 阅读
  8. Lua Table库

    2024-02-12 07:08:03       59 阅读