道具类型:PropTypes.array VS PropTypes.arrayOf(PropTypes.any)
PropTypes : PropTypes.array VS PropTypes.arrayOf(PropTypes.any)
考虑一下:
import PropTypes from 'prop-types';
[...]
Component.propTypes = {
someProp: PropTypes.array,
}
和:
import PropTypes from 'prop-types';
[...]
Component.propTypes = {
someProp: PropTypes.arrayOf(PropTypes.any),
}
第一个会使 eslint
在编辑器中触发错误:
Prop type 'array' is forbidden eslint(react/forbid-prop-types)
但是,如果不遵守条件,它们都会触发相同的错误,并且根据文档,它的行为方式应该完全相同。
这两个验证之间有什么区别吗?
(我可以忽略这个错误吗?)
我想区别是
PropTypes.array
扫描
- 对象数组
[{name:'ABC'},{name:'XYZ'}]
- 字符串数组
['Lorem','Ipsum']
- 整数数组
[2,4,66,4]
- 嵌套数组的数组
[['d'],[[{name:'a'},{name:'b'}]]]
- 函数数组
[foo,bar]
还有更多
而 PropTypes.arrayOf
将接受参数,即哪种类型的值将在数组内。喜欢更严格的规则
PropTypes.arrayOf(PropTypes.number)
仅扫描
- 整数数组
[2,4,66,4]
因为你提到了 PropTypes.number
如果有另一种数据类型
,将显示warning/error
同样适用于每个基元(整数、字符串)和非基元类型(对象、函数、数组)
喜欢
PropTypes.arrayOf(PropTypes.string)
扫描
- 字符串数组
['Lorem','Ipsum']
参考 - https://reactjs.org/docs/typechecking-with-proptypes.html#proptypes
考虑一下:
import PropTypes from 'prop-types';
[...]
Component.propTypes = {
someProp: PropTypes.array,
}
和:
import PropTypes from 'prop-types';
[...]
Component.propTypes = {
someProp: PropTypes.arrayOf(PropTypes.any),
}
第一个会使 eslint
在编辑器中触发错误:
Prop type 'array' is forbidden eslint(react/forbid-prop-types)
但是,如果不遵守条件,它们都会触发相同的错误,并且根据文档,它的行为方式应该完全相同。
这两个验证之间有什么区别吗?
(我可以忽略这个错误吗?)
我想区别是
PropTypes.array
扫描
- 对象数组
[{name:'ABC'},{name:'XYZ'}]
- 字符串数组
['Lorem','Ipsum']
- 整数数组
[2,4,66,4]
- 嵌套数组的数组
[['d'],[[{name:'a'},{name:'b'}]]]
- 函数数组
[foo,bar]
还有更多
而 PropTypes.arrayOf
将接受参数,即哪种类型的值将在数组内。喜欢更严格的规则
PropTypes.arrayOf(PropTypes.number)
仅扫描
- 整数数组
[2,4,66,4]
因为你提到了PropTypes.number
如果有另一种数据类型
,将显示warning/error同样适用于每个基元(整数、字符串)和非基元类型(对象、函数、数组)
喜欢
PropTypes.arrayOf(PropTypes.string)
扫描
- 字符串数组
['Lorem','Ipsum']
参考 - https://reactjs.org/docs/typechecking-with-proptypes.html#proptypes