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

 更新时间:2022年09月01日 10:45:34   作者:爱编译也爱吃肉的喵  
这篇文章主要介绍了关于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/库的名字

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

相关文章

  • 关于React动态修改元素样式的三种方式

    关于React动态修改元素样式的三种方式

    这篇文章主要介绍了关于React动态修改元素样式的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 使用React和Redux Toolkit实现用户登录功能

    使用React和Redux Toolkit实现用户登录功能

    在React中,用户登录功能是一个常见的需求,为了实现该功能,需要对用户输入的用户名和密码进行验证,并将验证结果保存到应用程序状态中,在React中,可以使用Redux Toolkit来管理应用程序状态,从而实现用户登录功能,需要详细了解可以参考下文
    2023-05-05
  • 比ant更丰富Modal组件功能实现示例详解

    比ant更丰富Modal组件功能实现示例详解

    这篇文章主要为大家介绍了比ant更丰富Modal组件功能实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 基于React的状态管理实现一个简单的颜色转换器

    基于React的状态管理实现一个简单的颜色转换器

    这篇文章主要介绍了用React的状态管理,简简单单实现一个颜色转换器,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2023-08-08
  • React中useState的理解和使用案例

    React中useState的理解和使用案例

    Hook是React16.8的新增特性,它可以让你在不编写class的情况下使用state以及其他的React特性,本文中讲解的useState就是React中的其中一个Hook,这篇文章主要给大家介绍了关于React中useState理解和使用的相关资料,需要的朋友可以参考下
    2024-03-03
  • React 原理详解

    React 原理详解

    这篇文章主要介绍了深入理解react的原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-10-10
  • useEvent显著降低Hooks负担的原生Hook

    useEvent显著降低Hooks负担的原生Hook

    这篇文章主要为大家介绍了useEvent显著降低Hooks负担的原生Hook示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Redux中间件的使用方法教程

    Redux中间件的使用方法教程

    中间件就是一个函数,对store.dispatch方法进行了改造,在发出 Action 和执行 Reducer 这两步之间,添加了其他功能,要理解中间件,关键点是要知道,这个中间件是连接哪些部分的软件,它在中间做了什么事,提供了什么服务
    2023-01-01
  • React模仿网易云音乐实现一个音乐项目详解流程

    React模仿网易云音乐实现一个音乐项目详解流程

    这篇文章主要介绍了React模仿网易云音乐实现一个音乐项目的详细流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 一起来学习React元素的创建和渲染

    一起来学习React元素的创建和渲染

    这篇文章主要为大家详细介绍了React元素的创建和渲染,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论