React Native中PropTypes报'undefined is not an object'错误如何解决?
解决React Native/Expo中PropTypes未定义的问题
这个报错其实很常见,核心原因是从React v15.5.0版本开始,PropTypes已经从React核心库中分离出来,成为了独立的npm包。你之前直接从react库中调用PropTypes的写法已经不再生效,所以才会触发"undefined is not an object"的错误。
下面是具体的解决步骤:
1. 安装prop-types依赖包
在项目根目录打开终端,执行以下命令二选一即可:
- 使用npm安装:
npm install prop-types --save - 使用yarn安装:
yarn add prop-types
执行完成后,你的package.json的dependencies字段里会新增一条"prop-types": "^x.x.x"的记录。
2. 在TaskList.js中正确导入PropTypes
把原来从react中导入PropTypes的代码,比如import React, { PropTypes } from 'react',替换成单独导入的方式:
import React from 'react'; import PropTypes from 'prop-types'; // 新增这一行单独导入
3. 正常使用PropTypes做类型校验
现在你就可以正常使用arrayOf、string等类型校验规则了,示例代码如下:
const TaskList = ({ tasks }) => { // 你的组件逻辑代码... }; // 定义PropTypes校验规则 TaskList.propTypes = { tasks: PropTypes.arrayOf(PropTypes.string).isRequired // 示例:校验必填的字符串数组 }; export default TaskList;
修改完成后重新编译你的Expo应用,这个报错应该就会消失了。这个方案完全兼容Expo XDE的开发环境,不用担心兼容性问题~
内容的提问来源于stack exchange,提问作者David Navarro Astudillo
相关产品推荐
相关产品推荐

