道具类型: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