我们定义了一个类组件之后,我们会从props中获取传进来的值,但我们正常情况下希望传进来的值的属性是可以被限定的,包括这一项是否是必填项,如果没有传默认值是什么之类的。
我们可以通过 类名.propTypes = {}来设置,比如
Person.propTypes = {
name: PropTypes.string.isRequired
}
这种写法是既控制了类型也控制了是否必填,那么初始值应该怎么设置呢?
Person.defaultProps = {
name: '张三';
}
所以综上来看,对于组件属性的传递,类型和是否必填依赖于propTypes这个包,而初始值则是根据defaultProps进行设置。
注:这种类名.属性的样子是不是有点熟悉呢?记不记得Java中什么时候可以这么写?是不是加了static这个关键词的时候呢?对的,这里我们可以把这两个写到类的里面去,通过static关键字,我们之前说过我们可以直接通过赋值语句在类中给类的实例加上属性值,那么我们也照样可以通过static这个关键给其类加上属性。
class Person extends React.Component {
static propTypes = {
name: PropTypes.string.isRequired
}
static defaultProps = {
name: '张三'
}
}