35

我有以下内容PropTypes

SmartTable.propTypes = {
  name: React.PropTypes.string.isRequired,
  cols: React.PropTypes.array.isRequired,
  rows: React.PropTypes.array.isRequired,
};

但棉绒告诉我:

Prop type "array" is forbidden,我该如何改变它?

4

6 回答 6

66

一个可能的解决方案(但我认为这并不聪明):

SmartTable.propTypes = {
  name: React.PropTypes.string.isRequired,
  cols: React.PropTypes.arrayOf(React.PropTypes.string),
  rows: React.PropTypes.arrayOf(React.PropTypes.string),
};
于 2017-01-20T19:49:25.357 回答
17

对我有用的解决方案之一:

如果你想要数组:

SmartTable.propTypes = {
  name: PropTypes.string.isRequired,
  cols: PropTypes.instanceOf(Array),
  rows: PropTypes.instanceOf(Array),
};

对于对象和数组,它可以是:

SmartTable.propTypes = {
  name: PropTypes.string.isRequired,
  cols: PropTypes.instanceOf(Object),
  rows: PropTypes.instanceOf(Array),
};
于 2018-08-08T13:05:23.557 回答
10

如果列和行的数组是我喜欢使用形状的对象,那么它可能是这样的。

    SmartTable.propTypes = {
      name: PropTypes.string.isRequired,
      cols: PropTypes.arrayOf(PropTypes.shape({
        id: PropTypes.string.isRequired,
        value: PropTypes.string,
       })
      rows: PropTypes.arrayOf(PropTypes.shape({
        id: PropTypes.string.isRequired,
        value: PropTypes.string,
       })
};
于 2019-01-14T10:30:21.787 回答
9

短版本:

对于数组 PropTypes.shape([])

对象 PropTypes.shape({})

于 2019-07-09T12:44:55.020 回答
0

我还找到了另一种绕过数组禁止错误的方法:

PropTypes.arrayOf(PropTypes.any.isRequired).isRequired
于 2021-10-17T00:13:36.530 回答
-1

只需添加评论 eslint-disable-line

someVal: PropTypes.array, // eslint-disable-line
于 2020-01-24T21:55:48.247 回答