Реактивная проверка правильности для строк даты - PullRequest
0 голосов
/ 04 февраля 2019

Как мне проверить строки даты в формате yyyy/mm/dd?

Я знаю, что могу использовать PropTypes.string, но он слишком свободный.

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Вы можете в основном копировать и вставлять из документации проп-типов, используя правильное регулярное выражение:

yourProp: function(props, propName, componentName) {
  if (!/\d{4}\/\d{2}\/\d{2}/.test(props[propName])) {
    return new Error(
      'Invalid prop `' + propName + '` supplied to' +
      ' `' + componentName + '`. Validation failed.'
    );
  }
}

Помните, документация - ваш друг: https://www.npmjs.com/package/prop-types

0 голосов
/ 04 февраля 2019

Я бы посоветовал не проверять форматирование с PropTypes, поскольку оно в первую очередь предназначено для проверки типов реквизитов.

Поскольку PropTypes полезен тольково время выполнения (т. е. он не будет генерировать предупреждения во время компиляции), вместо этого вы могли бы сделать что-то вроде:

if (!/\d{4}\/\d{2}\/\d{2}/.test(this.props.date) && (!process.env.NODE_ENV || process.env.NODE_ENV === 'development')) {
  console.warn('Warning: Invalid format for date prop');
}

Вы можете поместить это в свой конструктор, например.


При этом вы все равно можете использовать PropTypes, если действительно хотите, передавая пользовательскую функцию.Я собирался написать решение, но 0xc14m1z опередил меня:)

Вот мой предыдущий ответ, который может оказаться полезным: https://stackoverflow.com/a/40302064/2030321

0 голосов
/ 04 февраля 2019

Почему бы вам не использовать Date.parse()?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

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