在React 15.5开始,已经弃用
React.PropTypes
,现在用prop-types库替代
prop-types支持nodejs以及浏览器端,使用起来还是很方便的,也可以自定义类型检查,功能强大,但是我们应该注意,由于性能上的原因,我们应该只在开发阶段使用。
当然,有些javascript的拓展版本本来就有类型检查的功能,比如TypeScript
,Flow
。这两个我现在还没有接触过:)
来看个使用prop-types
的例子吧:
class Hello extends React.Component {
render() {
return <h1>Hello {this.props.name}</h1>
}
}
Hello.propTypes = {
name : PropTypes.string
}
这就要求Hello
组件的name属性必须是字符串类型的,如果我们传入别的参数,比如数字,我们看看会怎么样:
控制台里面报了一个错,恩,这就是一个简单的例子,不过
prop-types
的用法还有很多,具体可以查看官网。
由于我比较喜欢动态类型,所以我应该不会怎么使用这个库😢
这个小节还有一个内容就是设置属性的默认值
具体的用法类似于propTypes
,也是给组件添加一个属性defaultProps
。
class Hello extends React.Component {
render() {
return <h1>Hello {this.props.name}</h1>
}
}
Hello.propTypes = {
name : PropTypes.string
}
Hello.defaultProps = {
name : 'world'
}
虽然我觉得这个功能自己实现起来也很简单方便,比如:
class Hello extends React.Component {
render() {
return <h1>Hello {this.props.name || 'world'}</h1>
}
}
但是官方提供了这个一个东西,当然用还是比较好,主要是阅读起来比较明显,比较容易懂。