PropTypes: PropTypes.array VS PropTypes.arrayOf (PropTypes.any) - PullRequest
0 голосов
/ 09 июля 2020

Рассмотрим это:

import PropTypes from 'prop-types';

[...]

Component.propTypes = {
  someProp: PropTypes.array,
}

и:

import PropTypes from 'prop-types';

[...]

Component.propTypes = {
  someProp: PropTypes.arrayOf(PropTypes.any),
}

Первый вызовет eslint ошибку триггера в редакторе:

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

Однако они оба вызывают одну и ту же ошибку, если условие не соблюдается, и, согласно документации, оно должно вести себя точно так же.

Есть ли разница между этими двумя проверками?

(А можно эту ошибку игнорировать?)

1 Ответ

1 голос
/ 09 июля 2020

Думаю, разница в

PropTypes.array сканирование

  • массива объектов [{name:'ABC'},{name:'XYZ'}]
  • массива строк ['Lorem','Ipsum']
  • массив целых чисел [2,4,66,4]
  • массив вложенных массивов [['d'],[[{name:'a'},{name:'b'}]]]
  • массив функций [foo,bar]

и многое другое

В то время как для PropTypes.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...