近期刚开始学习dva
,然后在所有的实例中的component
组件中都出现了这么一些代码,例如App
组件中最后一行是这样的:
App.propTypes = {
item:PropTypes.object
}
刚开始还以为是state
中有啥那么这里就必须有啥,但是有一次没有写竟然没有任何影响,那么这个到底有什么用呢?
打开package.json
,你会发现有这么一行:
"prop-types": "^15.6.0"
这是一个类型检测库,记不记得之前react
也有个React.PropTypes
,但是自 React v15.5
起已弃用,所以现在用的就是prop-types
了
那么就来说一下上段代码是什么意思:
其实很简单,就是类型检测,检测item
属性是否是object
类型,如果你传入的数据不是object
类型的话,那么控制台就会报错,这就弥补了JavaScript
的不足之处,因为要是不写这个的话,你不小心传入的值类型不符合,那么你控制台将没有任何错误,但是你的运行结果却不是你想要的
然而有的时候你会发现还有这种写法:
App.propTypes = {
item:PropTypes.object.isRequired
}
多了一个isRequired
,这又是啥意思呢?
其实是通过isRequired
检测props
中某个必要的属性,即如果该属性不存在就报错,就比如刚才这个例子,当没有加isRequired
的时候,如果你根本没有传入item
属性,那么代码也不会报错,但是如果你加了isRequired
,控制台就报错啦,所以使用isRequired
还是很有必要的
每天进步一点点,fighting
网友评论