2019-03-16
回答
当应用程序在开发模式下运行时,React 将自动检查我们在组件上设置的所有属性,以确保他们的数据类型是正确的。对于不正确的数据类型,他将在开发模式下生成警告消息并在控制台输出。由于检查的性能影响,他们在生产模式下将不进行检查。必须传入的属性需包含 isRequired
。
例如,以下为我们为组件定义的 propTypes
:
import PropTypes from "prop-types"
class User extends React.Component {
static propTypes = {
name: PropTypes.string.isRequired,
age: PropTypes.number.isRequired
}
render() {
return (
<h1>Welcome, {this.props.name}</h1>
<h2>Age, {this.props.age}
)
}
}
加分回答
- 我们可以自定义
propTypes
- 使用
propTypes
并不是必需的,但这是一个非常棒的减少错误的实践 - 使用
PropTypes.element
可以指定只传递一个子代 defaultProps
用来确保this.props
在父组件没有指定的情况下有一个初始值。类型检查发生在defaultProps
赋值之后,所以类型检查也会应用在defaultProps
上。