关于react中的常见错误及解决

目录

最近在做react项目的时候遇到了几个报错,这几个报错在react项目还算常见,因此记录下来解决方法。

’type’ is missing in props validation

报错:type缺少props验证

解决:

1.查看下propTypes是否写成大写了,因为我们引入的时候是大写的,所以很多小伙伴可能直接复制过来就成大写了,也会报错哦

2.新增type: PropTypes.number

import PropTypes from 'prop-types';
const ReportOperate = ({ logId, type }) => {
  return <>
    <a href='javascript:;' onClick={() => handleJump(record.logId, record.type)} style={{ color: '#1DA57A' }}>查看详情</a>
    <a href={record.filePath} style={{ marginLeft: 20, color: '#1DA57A' }}>下载日志</a>
  </>
}
ReportOperate.propTypes = {
  logId: PropTypes.number,
  type: PropTypes.number,//加上这句就好了
}
export default ReportOperate

throw new Error(‘Cyclic dependency’ + nodeRep)

Error:Cyclic dependency

报错: Webpack 循环依赖

解决:

npm i --save-dev html-webpack-plugin@next

Cannot destructure property getFieldDecorator of ‘undefined’ or ‘null’.

报错: 无法破坏getFieldDecorator属性undefine或null

解决:

1.是否没有注入Form.create()

// 无状态组件
export default Form.create()(SearchForm)

//有状态组件
@Form.create()

Uncaught Error: Invariant Violation: Objects are not valid as a React child (found: object with keys {child}). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons. Check the render method of Matchs.

报错原因: 对数组进行map,然后取成了对象

解决:

1.map里面某一项取值是对象

Uncaught TypeError: Cannot read property ‘isSelectOptGroup’ of undefined

报错原因: const Option = Select.option 引入ant design 的select错误

解决:

改成下面的

const { Option } = Select

VM38184:1 Uncaught (in promise) Error: Actions must be plain objects. Use custom middleware for async actions.

报错原因: 缺少了dispatch

解决:

改成下面的

backend.js:6 ./src/pages/beach/containers/Reward.js

Module not found: Error: Can’t resolve ‘antd/es/descriptions’ in '/Users/chenjiaxin/bull/src/pages/beach/containers’

或者

Module not found: Can’t resolve 'antd/es/affix’

报错原因:

在项目中使用了antd里面的Descriptions描述列表组件,发现报了这个错误,根本原因就是使用的antd版本里面没有这个组件,项目中引用的antd版本是3.16.0,而我看的文档版本已经到了3.24.0了

解决: 将antd 版本更新到最新或者文档里的版本

Uncaught TypeError: Cannot convert undefined or null to object

报错原因: 由于undefined和null无法转成对象,如果用Object.keys等操作的话需要加个对象作为初始值。

解决:

 const [firstResponsibility, setFirstResponsibility] = useState({})

Uncaught TypeError: Cannot read property ‘value’ of null

报错原因: 涉及到React中的合成事件,debounce包装后的回调函数,是个异步事件,即e.target为null了

The SyntheticEvent is pooled. This means that the SyntheticEvent object will be reused and all properties will be nullified after the event callback has been invoked. This is for performance reasons. As such, you cannot access the event in an asynchronous way.

解决:

//错误代码
<Search
	addonBefore={prefixSelector}
    style={{ width: 250 }}
    allowClear
    onChange={debounce(e => {
    	console.log('e', e)
    	e.persist()
    	setSearchValue((e.target || {}).value)
    	handleChangeParams(searchId, (e.target || {}).value)
  	}, 1000)}
/>
 // 错误代码,可以执行,但是还是执行多次,没有起到防抖的效果
<Search
   addonBefore={prefixSelector}
   style={{ width: 250 }}
   allowClear
   onChange={e => {
     e.persist()
     debounce(() => {
       setSearchValue((e.target || {}).value)
       handleChangeParams(searchId, (e.target || {}).value)
     }, 2000)()
   }}
/>

// 正确代码
<Search
    addonBefore={prefixSelector}
    style={{ width: 250 }}
    allowClear
    onChange={e => {
       e.persist()
       handleChangeValue(e)
     }}
/>
const handleChangeValue = debounce(e => {
    setSearchValue((e.target || {}).value)
    handleChangeParams(searchId, (e.target || {}).value)
  }, 1000)

vendor.js:1 Uncaught Error: Minified React error #306; visit https://reactjs.org/docs/error-decoder.html?invariant=306&args[]=()&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.

Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

报错原因: 标签内的onClick事件立刻执行导致死循环,加载过多

解决:

// 错误代码
<CommonTabBox onCallBack={setCurTab} />
// 正确代码
 <CommonTabBox onCallBack={val => setCurTab(val)} />

无法使用 JSX,除非提供了 “–jsx” 标志

解决:

在vscode的setting.json中设置

 "typescript.tsdk": "node_modules\\typescript\\lib",

无法找到模块“react/jsx-runtime”的声明文件。

解决:

npm install -D @types/库的名字

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • React useEffect异步操作常见问题小结

    目录 三个常见的问题: 一.react hooks发异步请求 二.如何在组件加载的时候发起异步任务 三.如果在响应回来之前组件被销毁了会怎样? 四.如何在组件交互时发起异步任务 为什么两种写法会有差异呢? 五.其他陷阱 总结 useEffect 和异步任务搭配使用的时候会遇到的一些坑总结. 三个常见的问题: 1.如何在组件加载的时候发起异步任务 2.如何在组件交互的时候发起异步任务 3.其他陷阱 一.react hooks发异步请求 1.使用useEffect发起异步任务,第二个参数使用空数组可

  • React编程中需要注意的两个错误

    前言 在React编程中, 我们习惯用useEffect.useState等Hook去进行开发,但是在开发过程中难免会遇到许多问题,前阵子,我在写代码的时候,踩过不少坑,这里先列举两个较为常见的,也希望读者们看完这篇文章能够避免踩坑! 一. useEffect无限渲染 背景: 页面初始化的时候,我们需要通过useEffect()来进行一些初始化工作. 在useEffect()方法中,调用了代码getData()去后台调取数据. 比如页面所需的userName字段,我们在获取数据后,调用setUs

  • React + Typescript领域初学者的常见问题和技巧(最新)

    React + Typescript领域初学者的常见问题和技巧 创建一个联合类型的常量 Key const NAME = { HOGE: "hoge", FUGA: "fuga" } as const; keyof typeof NAME // => "HOGE" | "FUGA" 创建常量值的联合类型 typeof NAME[keyof typeof NAME] // => "hoge" |

  • 关于react中的常见错误及解决

    目录 最近在做react项目的时候遇到了几个报错,这几个报错在react项目还算常见,因此记录下来解决方法. ’type’ is missing in props validation 报错:type缺少props验证 解决: 1.查看下propTypes是否写成大写了,因为我们引入的时候是大写的,所以很多小伙伴可能直接复制过来就成大写了,也会报错哦 2.新增type: PropTypes.number import PropTypes from 'prop-types'; const Repo

  • myeclipse中使用maven前常见错误及解决办法

    1.jdk与jre (错误:java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0) windows-preferences-java-Installed JREs Add适用的jre windows-preferences-java-compiler Compiler compliance level:改为与上一致版本 项目右键-properties-java compiler Compiler

  • python中常见错误及解决方法

    python常见的错误有 1.NameError变量名错误 2.IndentationError代码缩进错误 3.AttributeError对象属性错误 详细讲解 1.NameError变量名错误 报错: >>> print a<br>Traceback (most recent call last):<br>File "<stdin>", line 1, in <module><br>NameError:

  • Oracle数据库TNS常见错误的解决方法汇总

    TNS是Oracle Net的一部分,是专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,就必须配置TNS.本文主要讲述了Oracle数据库TNS常见错误的解决方法如下: 1.ORA-12541:TNS:没有监听器 原因:没有启动监听器或者监听器损坏.若是前者,使用命令net start OracleOraHome10gTNSListener(名字可能有出入)即可;如果是后者,则使用"Net Configuration Assistant"

  • Spring集成Swagger常见错误及解决办法

    概览 在当下几乎所有的公司都采用了前后端分离的开发模式,Swagger作为了在API在线文档工具,几乎是后端开发的必备组件,最近公司的有个项目,在项目启动和打开Swagger页面时候,后端产生了大量的异常日志,虽然不影响现在的正常启动,不过,每次看到大量的异常日志,对于有代码洁癖的我,不能忍.于是乎今天抽了个时间把以下这些问题解决了,解决后再看日志,简直不能再爽歪歪啦~ 下面对问题以及解决的办法做个记录. 问题一 异常描述:No enum constant org.springframework

  • c语言详解动态内存分配及常见错误的解决

    目录 为什么会有动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的错误 对NULL指针的解引用操作 越界访问 对非动态内存进行free 使用free释放动态开辟内存的一部分 对同一块动态内存多次释放 对动态内存内存忘记释放(内存泄漏) 为什么会有动态内存分配 内存使用方式有两种 1.创建一个变量 2.创建一个数组 int a = 1; int arr[10]; 但是这两种方式都有一些特点 1.空间是固定大小的,不会变 2.必须提前知道要开辟多少空间,必

  • C语言开发中的常见错误详解

    目录 一.编译型错误 1.解释 2.解决办法 3.代码示例 二.链接型错误 1.解释 2.解决办法 3.代码示例 三.运行时错误 1.解释 2.解决办法 3.代码示例 一.编译型错误 1.解释 编译型错误一般指语法错误,直接看错误信息或者是凭借着经验就可以搞定,相对来说较简单. 2.解决办法 双击错误提示信息,编译器就会自动定位发生错误的位置,按照正确的语法改正即可. 3.代码示例 正确代码: #include<stdio.h> int main() { int a = 10; int b =

  • 再谈javascript常见错误及解决方法

    初学Javascript,每天总是被很小的问题折磨半天,今晚就有好几个小问题. 第一:全部使用双引号造成匹配错误 <input type="checkbox" onmouseover="document.getElementById("test").style.display="none":"/> 改行一直报错误:unexpected toke "}"  检查半天也没有发现错误,对照发现视频上是

  • Nginx启动常见错误及解决方法

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)错误,进到logs文件发现的确没有nginx.pid文件 [root@localhost sbin]# ./nginx -s reload nginx: [error]

  • CentOS编译安装PHP常见错误及解决办法

    1.configure: error: No curses/termcap library found yum -y install ncurses-devel 2.configure: error: xml2-config not found. Please check your libxml2 installation. yum -y install libxml2 libxml2-devel 3.configure: error: Cannot find OpenSSL's yum -y

随机推荐