博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决由于export,import错误导致的元素类型无效【Element type is invalid】
阅读量:6808 次
发布时间:2019-06-26

本文共 1099 字,大约阅读时间需要 3 分钟。

前些日子做项目时有一个报错,虽然解决了,但是对于导致的原因,还是一知半解。今天突然发现一篇博客,大受启发,决定将这个问题系统的总结一下。

报错信息:

在这里插入图片描述

提示元素类型无效,可能是忘记从你定义的文件中导出来组件,或者是你弄混了要导入的组件的默认名字,没有和你导入时的名字相对应。

解决方式:

1:在导出文件中使用export class 组件类名称 extends Component 将组件导出。此时可以在要导入的地方使用 import {组件类名称} from “路径” 进行导入使用。

2:在导出文件类中,使用class 组件类名称 extends Component 对组件类进行定义,并在定义之后使用 export default 组件类名称的方式将组件进行导出。此时可以在要导入的地方使用 import 组件类名称 from “路径” 方式将需要的组件类导入进来。

原因分析:

在初识react-native时就在想为什么每个文件最上面的导入外部组件的方式会有不同

import { View, Text } from "react-native"import TestCompontent from "../../TestCompontent"

为什么一个带大括号,另一个就不带大括号呢???

第一种方式:
带大括号的表示在导出文件中使用的是export class 组件类名称 extends Component
而我们常见的带大括号引入的组件,都是从一些第三方库中引入的组件文件,例如从react-native中引入的View,Text组件。这些都是固定的组件名字,他是需要查看文档,我想引入一个View,就必须知道在这个第三方库中存在View这个第三方组件,况且一个第三方库中有许许多多的组件,因此必须知道确切的名称才能进行导入,而不能自己随意的起名。
第二种方式:
不带大括号是使用 export default 组件类名称的方式将组件类进行导出。此时一般都是一些自定义的组件,况且在自定义组件中一般一个文件只有一个组件,因此只要import 的来源是正确的,就可以将组件类的名称进行自定义取名 import Test from "../../TestCompontent"
总结:
1:其实上述两种方式的区别主要就是export classexport default class 的区别。使用export default的方式将组件导出时就可以将组件类的名称进行自定义。如果使用export的方式进行自定义,那么就必须按照定义组件类时的名称进行导入。
2:有帮助的博客链接:

转载地址:http://cgtwl.baihongyu.com/

你可能感兴趣的文章
Spring知识点总结-1
查看>>
微软私有云分享(R2)21 BMC提升B格
查看>>
MDSF:如何使用GMF来做TOGAF建模工具
查看>>
Spring Security简介
查看>>
打造一流的研发中心
查看>>
MCollective架构篇3-Puppet插件的部署及测试
查看>>
配置GNS使用CRT连接
查看>>
Java:集合类性能分析
查看>>
【百度地图API】关于如何进行城市切换的三种方式
查看>>
How to provide highlighting with Spring data elasticsearch
查看>>
MongoDB 游标
查看>>
即将搭载人工智能芯片的华为Mate10,究竟会为业界带来什么?
查看>>
Android实现登录小demo
查看>>
AgentWeb是基于Android WebView一个功能完善小型浏览器库
查看>>
开放数据中心联盟推8个云计算应用模型
查看>>
学习数据分析的“里程碑”是什么?
查看>>
数据科学与DevOps之间的差距还有救吗?
查看>>
信息化一周回顾:金融业大数据十大趋势
查看>>
Http、TCP/IP协议与Socket之间的区别
查看>>
文思海辉:智慧数据避免企业成为大数据时代落伍者
查看>>