在写react程序时遇到警告:

Warning: 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.

我们看到,react说无法对卸载的组件执行React状态更新,我造成了内存泄漏,并且报错最后一句说让我在useEffect的清理函数中取消所有异步任务。

但是实际上我都代码中没有使用useEffect,这该如何取消异步任务?

实际上我的代码里存在一处条件渲染,并且在其中使用了onChange对Select组件的值做了监听,当条件为false是会卸载该组件,然而onChange还在监听并在回调中去set状态,这就是原因了。

于是我将条件渲染改为:

style={{ display: isSelecting(index, idx) ? 'block' : 'none' }}
return (
<div className="wrap">
<div className="cell"
style={{ display: isSelecting(index, idx) ? 'block' : 'none' }}
>
<Select size="small" className='width'
defaultValue={CurrPropType}
onChange={onChangePropType}
options={PropTypes}
/>
</div>
<div className="cell"
style={{display: !isSelecting(index, idx) ? 'block' : 'none'}}
onClick={() => updateSelected(index, idx, true, type)}
>
<PropTypeName type={type} />
</div>
</div>
)

问题解决。

此外,useEffect中有异步任务的就很好解决了,在useEffect最后return一个清理函数,清理调相关内容就行了。

解决React Warning: 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, ... useEffect cleanup function.的更多相关文章

  1. 【React踩坑记三】React项目报错Can't perform a React state update on an unmounted component

    意思为:我们不能在组件销毁后设置state,防止出现内存泄漏的情况 分析出现问题的原因: 我这里在组件加载完成的钩子函数里调用了一个EventBus的异步方法,如果监听到异步方法,则会更新state中 ...

  2. 【React踩坑记三】React项目报错Can't perform a React state update on an unmounted component

    意思为:我们不能在组件销毁后设置state,防止出现内存泄漏的情况 分析出现问题的原因: 我这里在组件加载完成的钩子函数里调用了一个EventBus的异步方法,如果监听到异步方法,则会更新state中 ...

  3. React报错: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,

    今天在开发时报了以下错误,记录一下 我们不能在组件销毁后设置state,防止出现内存泄漏的情况 出现原因直接告诉你了,组件都被销毁了,还设置个锤子的state啊 解决方案: 利用生命周期钩子函数:co ...

  4. React篇-报错信息:warning: Can't call setState (or forceUpdate) on an unmounted component.

    报错信息是: Warning: Can't call setState (or forceUpdate) on an unmounted component. This is a no-op, but ...

  5. React学习笔记-1-什么是react,react环境搭建以及第一个react实例

    什么是react?react的官方网站:https://facebook.github.io/react/下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似. ...

  6. React系列(一):React入门

    React简介 1.由来 React是有Facebook开发出来用于构建前端界面的JS组件库,由于其背后的强大背景,使得这款库在技术开发上完全没有问题. 2.React的优势 解决大规模项目开发中数据 ...

  7. React Native是一套使用 React 构建 Native app 的编程框架

    React Native是一套使用 React 构建 Native app 的编程框架 React Native at first sight what is React Native? 跟据官方的描 ...

  8. react.js 从零开始(七)React (虚拟)DOM

    React 元素 React 中最主要的类型就是 ReactElement.它有四个属性:type,props,key 和ref.它没有方法,并且原型上什么都没有. 可以通过 React.create ...

  9. [React] Safely setState on a Mounted React Component through the useEffect Hook

    In the class version of this component, we had a method called safeSetState which would check whethe ...

  10. react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types

    最近使用React的类型检查PropTypes时,遇到错误:TypeError: Cannot read property 'array' of undefined 看了下自己的React版本:    ...

随机推荐

  1. 0425-字节输入流FileInputStream

    package A10_IOStream; import java.io.FileInputStream; import java.io.IOException; /* java.io.InputSt ...

  2. 第15章 流与IO

    第15章 流与IO 15.1 .NET 流的架构 .NET 流的架构主要包含三个概念:** 后台存储 . 装饰器 以及 流适配器 **,如图所示: C7.0 核心技术指南 第7版.pdf - p655 ...

  3. 使用docker-compose 部署本地apollo

    注意: Mysql 需要自己安装本教程只提供apollo的安装和部署 拉取镜像 docker pull apolloconfig/apollo-portal docker pull apollocon ...

  4. zabbix - [03] 安装部署

    参考:https://www.yuque.com/fenghuo-tbnd9/ffmkvs zabbix6要求操作系统为Centos8,所以一开始安装部署的时候发现少了zabbix-server-my ...

  5. Linux - 搭建一套Apache大数据集群

    一.服务器操作系统 主机名 操作系统 node01 Centos 7.9 node02 Centos 7.9 node03 Centot 7.9 二.大数据服务版本 服务 版本 下载 JDK jdk- ...

  6. 从汇编层解读Golang的闭包实现:逃逸分析与性能影响

    本文精心梳理了一系列面试中具有一定难度的高频Golang问题,其中部分知识点可能你之前未曾深入探究,然而它们却在面试和实际工作中至关重要. 包括:Golang的基础语法.并发模型.内存管理等核心知识点 ...

  7. Web前端入门第1问:英语是否很重要?有哪些前置条件?

    HELLO,这里是大熊学习前端开发的入门笔记. 本系列笔记基于 windows 系统. 在入门之前,是否有这样的疑问: 程序员的英语是否很牛?毕竟程序员的代码像天书一样,比如这样: 答案是否定的. 英 ...

  8. css px em rem % vw vh vm 区别

    前言 在传统项目开发中,我们只会用到 px.%.em 这几个单位长度,它们可以适用大部分项目的开发,并且拥有较好的兼容性. 而从 css3 开始,浏览器对逻辑单位的支持又提升了新的境界,增加了 rem ...

  9. go 结构体多字段多因素排序

    前言 有时候我们需要处理一份数据,需要多个字段作为条件,联合进行排序. 代码 package main import ( "fmt" "sort" ) // 数 ...

  10. Ribbon-Loadbalancer自定义负载均衡策略:本地优先+偏向服务器优先

    Ribbon 核心顶层抽象 package com.netflix.loadbalancer; public interface IRule { Server choose(Object var1); ...