React组件props默认值和验证没生效怎么办?
我在开发可复用按钮组件时遇到了props规范问题。按照惯例写了defaultProps和propTypes,但发现当父组件没传required的prop时,应用居然没报错,而且默认值也没生效。
这是我写的组件代码:
class Button extends React.Component {
render() {
return <button>{this.props.label}</button>;
}
}
Button.defaultProps = {
label: 'Default Button'
};
Button.propTypes = {
label: React.PropTypes.string.isRequired
};
测试时发现,当父组件不传label时,按钮显示为空而不是默认值。控制台也没有出现propTypes的警告。我尝试过把defaultProps放在类里面定义,或者用函数组件重写,但问题依旧存在。这是哪里配置错了呢?
确保安装了 prop-types 包:
npm install prop-types,并且你在开发环境(development)下运行,production 模式不会报 warning。