2
votes

Validation React Prop pour les chaînes de date

Comment puis-je valider les chaînes de date au format aaaa / mm / jj ?

Je sais que je peux utiliser PropTypes.string mais c'est trop lâche.


2 commentaires

Validez vos accessoires avec une regex?


Eh bien, une autre solution consiste à utiliser des dates réelles et à valider que la propriété est un objet de date.


3 Réponses :



2
votes

Vous pouvez essentiellement copier-coller à partir de la documentation des types de prop en utilisant une expression régulière appropriée:

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.'
    );
  }
}

N'oubliez pas que la documentation est votre ami: https://www.npmjs.com/package/prop-types


0 commentaires

1
votes

Je déconseillerais de valider le formatage avec PropTypes , car il est principalement destiné à la vérification de type des accessoires.

Depuis PropTypes n'est utile que pendant l'exécution (c'est-à-dire qu'il ne générera pas d'avertissements pendant la compilation), vous pouvez à la place faire quelque chose comme:

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');
}

Vous pouvez le mettre votre constructeur, par exemple.


Cela étant dit, vous pouvez toujours utiliser PropTypes si vous le souhaitez vraiment en passant une fonction personnalisée. J'allais écrire une solution, mais 0xc14m1z m'a battu :)

Voici une de mes réponses précédentes que vous pourriez trouver utile: https://stackoverflow.com/a/40302064/2030321


0 commentaires