Если propType не требуется, почему ESLint хочет предоставить для него поддержку по умолчанию?

const propTypes = {
  label: PropTypes.string,
};
const defaultProps = {};

Почему ESLint хочет, чтобы мы предоставили значение по умолчанию для метки, когда это не требуется?

(react/require-default-props)

Я продлеваю airbnb

github.com/yannickcr/eslint-plugin-react/blob/master/docs/ru‌ les /… должен ответить на ваш вопрос.
Hardik Modha 14.09.2018 14:52

Цели ESLint - предоставить подключаемую утилиту линтинга для JavaScript, чтобы с легкостью поддерживать качество вашего кода. Говоря об этом, вы можете настроить его и отключить некоторые правила, чтобы не получать ошибок. Я бы посоветовал вам отключить response / require-default-prop. Например, когда член команды создает компонент, вы не будете знать, что с ним делать, если не увидите PropTypes, поэтому я рекомендую продолжать использовать PropTypes.

Antonio Pangallo 14.09.2018 15:06

Обеспечивает стабильность и удобочитаемость вашего компонента.

t3__rry 14.09.2018 15:17

Читая комментарии и ответы, я все еще не понимаю «почему»

truongnm 14.07.2020 07:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
9
4
10 697
3

Ответы 3

У меня такая же проблема. Я использовал это как решение.

const propTypes = {
  lable: PropTypes.string,
};
const defaultProps = {
  lable: '',
};

Спасибо за потраченное время, однако вопрос заключался в том, зачем это нужно, а не как это исправить.

Nat Geo 10.01.2021 15:23

@NatGeo, может быть, это может помочь.

Dev Yego 28.06.2021 20:45

Рабочий пример ReactJS для устранения eslint(react/require-default-props):

const MyComponent extends React.Component {
  ...
}

MyComponent.defaultProps = {
  el: '',
  quantity: 0,
  arr: [],
  ...
}

MyComponent.propTypes = {
  el: PropTypes.string,
  quantity: PropTypes.number,
  arr: PropTypes.array,
  ...
}

export default MyComponent

Я пришел к выводу, что нет никакого преимущества значимый для определения defaultProps для компонента, когда вместо этого вы можете использовать значения по умолчанию ES6.

Единственное преимущество, которое я нашел (из документов):

One advantage of defaultProps over custom default logic in your code is that defaultProps are resolved by React before the PropTypes typechecking happens, so typechecking will also apply to your defaultProps. The same also holds true for stateless functional components: default function parameters do not behave the same as defaultProps and thus using defaultProps is still preferred.

Таким образом, есть некоторые предполагаемые преимущества, но я думаю, что многословность и время, необходимое для реализации defaultProps, делают их не стоящими, если вам действительно не нужна эта функциональность.


Исключения:

Есть несколько компонентов, для которых мы делаем исключения и определяем OurComponent.defaultProps, но даже в этом случае мы делаем это выборочно. Мы определяем их только там, где в противном случае использовали бы значения по умолчанию ES6. Мы не определяем значение по умолчанию для каждой необязательной опоры.

Стоит отметить, что соответствующее правило нет включено в «рекомендуемую» конфигурацию eslint-plugin-реагировать.

Другие вопросы по теме