You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:33:21