React报错Element type is invalid解决案例

 更新时间:2022年12月19日 11:16:15   作者:chuck  
这篇文章主要为大家介绍了React报错Element type is invalid解决案例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

总览

产生"Element type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got"错误有多个原因:

  • 在导入组件时,将默认导入和命名导入混淆。
  • 忘记从文件中导出组件。
  • 不正确地定义了一个React组件,例如,作为一个变量而不是一个函数或类。

为了解决该错误,确保使用大括号来导入命名导出而不是默认导出,并且只使用函数或类作为组件。

这里有个示例来展示错误是如何发生的。

// 👇️ must be function or class (NOT variable)
const Button = <button>Click</button>;
export default function App() {
  // ⛔️ Warning: React.jsx: type is invalid -- expected a string
  // (for built-in components) or a class/function
  // (for composite components) but got:
  return (
    <div>
      <Button />
      <h1>hello world</h1>
    </div>
  );
}

上述代码问题在于,我们声明了Button变量,该变量返回了JSX代码。

函数组件

为了解决该错误,我们必须使用函数组件来代替。

// 👇️ is now function
const Button = () => {
  return <button>Click</button>;
};
export default function App() {
  return (
    <div>
      <Button />
      <h1>hello world</h1>
    </div>
  );
}

现在,Button是一个函数,并返回JSX代码。可以作为一个React组件使用。

混淆导入导出

另一个常见的错误原因是混淆了默认和命名的导入和导出。

当组件使用默认导出来导出时,你必须确保导入的时候没有使用大括号。

// Header.js
// 👇️ default export
export default function Header() {
  return <h2>Hello world</h2>;
}

现在,它必须不带大括号导入。

// 👇️ default import
import Header from './Header';
export default function App() {
  return (
    <div>
      <Header />
    </div>
  );
}

另一方面,如果你的组件使用命名导出来导出的话,它必须使用大括号导入。

// Header.js
// 👇️ named export
export function Header() {
  return <h2>Hello world</h2>;
}

现在,当组件被导入时,它必须包裹在大括号内。

// 👇️ named import
import {Header} from './Header';
export default function App() {
  return (
    <div>
      <Header />
    </div>
  );
}

确保你没有将一个组件作为默认导出,并试图将其作为命名导入(用大括号包裹),或者反过来。因为这是导致错误的一个常见原因。

如果错误尚未解决,确保重启你的开发服务以及IDE。

检查路径

你还应该确保指向模块的路径拼写正确,大小写正确以及指定导出组件的文件。

确保路径正确的最好方法是删除它,开始输入路径,让你的IDE用自动补全来帮助你。

如果你开始输入路径后没有得到自动补全,很可能是你的路径不正确。

使用ESM

确保你没有混淆ES ModulesCommonJS语法。

你应该在你的React.js应用程序中只使用import/export语法,而不是module.exportsrequire()语法。

从react-router-dom导入

当我们从react-router而不是react-router-dom导入东西时,有时也会出现这个错误。

// ⛔️ BAD
// import {Link} from 'react-router';
// ✅ GOOD
import {Link} from 'react-router-dom';

如果你使用react router,请确保从react-router-dom导入,而不是从react-router中。

当我们试图使用不是函数或类的东西作为一个组件时,会产生"Element type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got:"错误信息。

错误信息

你应该看一下got:后面的错误信息,因为它可能表明是什么原因导致的错误。

当我们使用一个组件时,我们必须确保它是一个函数或一个类。如果你使用任何其他的值作为一个组件,就会引起错误。

以上就是React报错Element type is invalid解决案例的详细内容,更多关于React报错Element type invalid的资料请关注脚本之家其它相关文章!

相关文章

  • React事件监听和State状态修改方式

    React事件监听和State状态修改方式

    这篇文章主要介绍了React事件监听和State状态修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • React中路由参数如何改变页面不刷新数据的情况

    React中路由参数如何改变页面不刷新数据的情况

    这篇文章主要介绍了React中路由参数如何改变页面不刷新数据的情况,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • React三大属性之props的使用详解

    React三大属性之props的使用详解

    这篇文章主要介绍了React三大属性之props的使用详解,帮助大家更好的理解和学习使用React,感兴趣的朋友可以了解下
    2021-04-04
  • antd4里table滚动的实现

    antd4里table滚动的实现

    本文主要介绍了antd4里table滚动的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 使用react-virtualized实现图片动态高度长列表的问题

    使用react-virtualized实现图片动态高度长列表的问题

    一般我们在写react项目中,同时渲染很多dom节点,会造成页面卡顿, 空白的情况。为了解决这个问题,今天小编给大家分享一篇教程关于react-virtualized实现图片动态高度长列表的问题,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • react使用antd表单赋值,用于修改弹框的操作

    react使用antd表单赋值,用于修改弹框的操作

    这篇文章主要介绍了react使用antd表单赋值,用于修改弹框的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • React使用react-sortable-hoc如何实现拖拽效果

    React使用react-sortable-hoc如何实现拖拽效果

    这篇文章主要介绍了React使用react-sortable-hoc如何实现拖拽效果问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 详解关于React-Router4.0跳转不置顶解决方案

    详解关于React-Router4.0跳转不置顶解决方案

    这篇文章主要介绍了详解关于React-Router4.0跳转不置顶解决案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • React报错之组件不能作为JSX组件使用的解决方法

    React报错之组件不能作为JSX组件使用的解决方法

    本文主要介绍了React报错之组件不能作为JSX组件使用的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • react组件基本用法示例小结

    react组件基本用法示例小结

    这篇文章主要介绍了react组件基本用法,结合实例形式分析了react组件传值、生命周期、受控组件和非受控组件等相关操作技巧,需要的朋友可以参考下
    2020-04-04

最新评论