La déclaration des « props » avec Vue.js peut inclure plus que la simple définition des données transmises du composant parent au composant enfant. Voyons comment une validation plus complexe est déclarée.
defineProps({type:{// vous définissez d'abord votre règle de validation,
// ci-dessous, les `validValues` sont représentées par un tableau de chaînes de caractères.
// voir https://vuejs.org/guide/components/props.html#prop-validation
validator(value){constvalidValues=["primary","ghost","dashed","link","text","default",];// si la valeur fournie existe dans le tableau des valeurs valides,
// alors la prop est acceptée.
returnvalidValues.includes(value);},// omettre ce qui suit si la prop est obligatoire et n'a pas de valeur par défaut.
default(){return"default";},},});
With TypeScript, it’d look like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import{PropType}from"vue";defineProps({type:{// PropType est utilisé pour annoter une propriété avec des
// types plus avancés lors de la déclaration de props à
// l'exécution.
type:StringasPropType<"primary"|"ghost"|"dashed"|"link"|"text"|"default">,default:"default",validator:(prop: string)=>["primary","ghost","dashed","link","text","default"].includes(prop),},});
Crédits à :
@webfansplz qui a construit le site web Vue.js challenges app et m’a mis au défi de trouver la solution sur la validation des props.