Реактор линтер airbnb массив прототипов
У меня есть следующее PropTypes
:
SmartTable.propTypes = {
name: React.PropTypes.string.isRequired,
cols: React.PropTypes.array.isRequired,
rows: React.PropTypes.array.isRequired,
};
но линтер говорит мне:
Prop type array is forbidden
как я могу это изменить?
6 ответов
Решение
Возможное решение для этого (но я думаю, что это не умно):
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),
};
Если массив столбцов и строк - это объекты, мне нравится использовать форму, чтобы она могла выглядеть примерно так.
SmartTable.propTypes = {
name: PropTypes.string.isRequired,
cols: PropTypes.arrayOf(PropTypes.shape({
id: PropTypes.string.isRequried,
value: PropTypes.string,
})
rows: PropTypes.arrayOf(PropTypes.shape({
id: PropTypes.string.isRequried,
value: PropTypes.string,
})
};
Краткие версии:
для массиваPropTypes.shape([])
для объектаPropTypes.shape({})
Я обнаружил, что это также жизнеспособный способ обойти запрещенную ошибку массива.
PropTypes.arrayOf(PropTypes.any.isRequired).isRequired
Просто добавьте комментарий eslint-disable-line
someVal: PropTypes.array, // eslint-disable-line