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

React项目报错TypeError: Cannot read property 'string' of undefined求助

解决React TypeError: 无法读取未定义的属性'string'问题

这个问题我太熟了,踩过同款坑!咱们一步步拆解解决:

问题根源

  1. React.PropTypes已被废弃:从React v15.5.0开始,官方把PropTypes从React核心库中剥离,移到了单独的prop-types npm包。你现在直接访问React.PropTypes会得到undefined,自然读不到string属性。
  2. 导入拼写错误:你写的import PropType from 'prop-types'少了一个s,正确的应该是PropTypes,这也会导致后续调用失败。

具体修复步骤

  • 修正导入语句:把拼写错误的PropType改成PropTypes:
    import React, { Component } from 'react';
    import PropTypes from 'prop-types'; // 这里补全s
    
  • 替换PropTypes调用对象:把代码里的React.PropTypes全部换成你导入的PropTypes:
    Counter.propTypes = {
      caption: PropTypes.string.isRequired,
      initValue: PropTypes.number.isRequired
    };
    
  • 修正defaultProps的冲突:你给caption设置了null默认值,但propTypes里标记了它是必填的字符串,这会产生矛盾。建议二选一:
    • 如果caption确实是必填项,删掉defaultProps里的caption配置:
      Counter.defaultProps = {
        initValue: 0
      };
      
    • 如果需要给caption设置默认值,去掉propTypes里的isRequired:
      Counter.propTypes = {
        caption: PropTypes.string,
        initValue: PropTypes.number.isRequired
      };
      Counter.defaultProps = {
        caption: '默认标题', // 换成合理的默认字符串
        initValue: 0
      };
      

这样修改后,就能彻底解决这个报错啦!

内容的提问来源于stack exchange,提问作者huing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:31:44