PropTypes:PropTypes.array VS PropTypes.arrayOf(PropTypes.any)

Hol*_*yol 4 reactjs eslint react-proptypes

考虑一下:

import PropTypes from 'prop-types';

[...]

Component.propTypes = {
  someProp: PropTypes.array,
}
Run Code Online (Sandbox Code Playgroud)

和 :

import PropTypes from 'prop-types';

[...]

Component.propTypes = {
  someProp: PropTypes.arrayOf(PropTypes.any),
}
Run Code Online (Sandbox Code Playgroud)

第一个会eslint在编辑器中触发错误:

Prop type 'array' is forbidden eslint(react/forbid-prop-types)

但是,如果不遵守条件,它们都会触发相同的错误,并且根据文档,它的行为应该完全相同。

这两个验证之间有什么区别吗?

(我可以忽略这个错误吗?)

Mee*_*eri 6

我想区别是

PropTypes.array扫描

  • 对象数组[{name:'ABC'},{name:'XYZ'}]
  • 字符串数组['Lorem','Ipsum']
  • 整数数组[2,4,66,4]
  • 嵌套数组的数组[['d'],[[{name:'a'},{name:'b'}]]]
  • 函数数组[foo,bar]

以及更多

而 forPropTypes.arrayOf则接受数组内的值类型的参数。喜欢更严格的规则

PropTypes.arrayOf(PropTypes.number)仅扫描

  • 整数数组,[2,4,66,4]因为你提到PropTypes.number

如果存在其他数据类型,则会显示警告/错误

对于每个基元(整数、字符串)和非基元类型(对象、函数、数组)也是如此

喜欢 PropTypes.arrayOf(PropTypes.string)扫描

  • 字符串数组['Lorem','Ipsum']

参考 - https://reactjs.org/docs/typechecking-with-proptypes.html#proptypes