React项目报错TypeError: Cannot read property 'string' of undefined求助
解决React TypeError: 无法读取未定义的属性'string'问题
这个问题我太熟了,踩过同款坑!咱们一步步拆解解决:
问题根源
- React.PropTypes已被废弃:从React v15.5.0开始,官方把PropTypes从React核心库中剥离,移到了单独的
prop-typesnpm包。你现在直接访问React.PropTypes会得到undefined,自然读不到string属性。 - 导入拼写错误:你写的
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
相关产品推荐
相关产品推荐

