反应 linter airbnb proptypes 数组
React linter airbnb proptypes array
我有以下 PropTypes
:
SmartTable.propTypes = {
name: React.PropTypes.string.isRequired,
cols: React.PropTypes.array.isRequired,
rows: React.PropTypes.array.isRequired,
};
但是 linter 说我:
Prop type "array" is forbidden
,如何更改?
一个可能的解决方案(但我认为这并不聪明):
SmartTable.propTypes = {
name: React.PropTypes.string.isRequired,
cols: React.PropTypes.arrayOf(React.PropTypes.string),
rows: React.PropTypes.arrayOf(React.PropTypes.string),
};
对我有用的解决方案之一:
如果你想要数组:
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),
};
如果 cols 和 rows 的数组是我喜欢使用形状的对象,那么它可能是这样的。
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,
})
};
简短版本:
对于数组
PropTypes.shape([])
对于对象
PropTypes.shape({})
只需添加注释 eslint-disable-line
someVal: PropTypes.array, // eslint-disable-line
我也找到了另一种方法来绕过数组禁止错误:
PropTypes.arrayOf(PropTypes.any.isRequired).isRequired
我有以下 PropTypes
:
SmartTable.propTypes = {
name: React.PropTypes.string.isRequired,
cols: React.PropTypes.array.isRequired,
rows: React.PropTypes.array.isRequired,
};
但是 linter 说我:
Prop type "array" is forbidden
,如何更改?
一个可能的解决方案(但我认为这并不聪明):
SmartTable.propTypes = {
name: React.PropTypes.string.isRequired,
cols: React.PropTypes.arrayOf(React.PropTypes.string),
rows: React.PropTypes.arrayOf(React.PropTypes.string),
};
对我有用的解决方案之一:
如果你想要数组:
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),
};
如果 cols 和 rows 的数组是我喜欢使用形状的对象,那么它可能是这样的。
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,
})
};
简短版本:
对于数组
PropTypes.shape([])
对于对象
PropTypes.shape({})
只需添加注释 eslint-disable-line
someVal: PropTypes.array, // eslint-disable-line
我也找到了另一种方法来绕过数组禁止错误:
PropTypes.arrayOf(PropTypes.any.isRequired).isRequired