Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

75
Visualizações
Vue - Pasar la matriz de reglas al componente secundario

Actualmente estoy pasando un conjunto de accesorios, "propSet", a un componente secundario. Los accesorios se calculan y detectan un booleano de 'modo de edición' y cambian en consecuencia.

"propSet" define los siguientes accesorios de entrada de formulario: color, relleno, denso, delineado, solo lectura, requerido y reglas .

Todos los accesorios funcionan, excepto las "reglas". Recibo el siguiente mensaje de error en la consola cada vez que un componente secundario usa la configuración 'editMode == true' de "propSet":

[Advertencia de Vue]: accesorio no válido: la verificación de tipo falló para las "reglas" de accesorios. Matriz esperada, objeto obtenido

He intentado bastantes cosas, pero en particular, he intentado:

  • Agregar validación de tipo al componente secundario para la matriz de reglas

    • props: ['propSet'] //original
    • props: { propSet: Array } //updated
  • Object.entries utilizado () para cambiar el objeto a una matriz

    • var rulesSet = Object.entries(this.rules)
  • Cambiar reglas: intenté configurar las reglas de varias maneras diferentes

    •  //original rules: { required: (v) => !!v || "This field is required", autoComplete: (v) => !!(v && v.length) || "This field is required", },
    •  //updated rules: [{ required: (v) => !!v || "This field is required"},{ autoComplete: (v) => !!(v && v.length) || "This field is required", }],

He leído la documentación de Props varias veces y no he visto una respuesta a mi problema allí (a menos que lo esté pasando por alto). También he leído la documentación que pude encontrar relacionada con la matriz de reglas en la API de Vuetify.

También he leído bastantes preguntas de SO relacionadas con Vue.js, accesorios y componentes.

Creo que me estoy perdiendo algo muy obvio.

Aquí hay un codepen con un conjunto diferente de accesorios por razones de brevedad, que demuestra el problema:

Pasar-Reglas-Como-Prop

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Se espera que la propiedad de rules del componente de campo de texto de Vuetify sea una matriz:

Vuetify incluye validación simple a través de reglas prop. El prop acepta una matriz mixta de tipos function , boolean y string . Cuando el valor de entrada cambie, se validará cada elemento de la matriz. Las funciones pasan el modelo v actual como argumento y deben devolver true / false o una string que contenga un mensaje de error.

Ver: Componente de campo de texto - Vuetify

Sin embargo, en los datos de sus parent , define rules como un objeto con sus funciones de validación (en lugar de una matriz que contiene esas funciones):

 rules: { required: (v) => !!v || "This field is required", autoComplete: (v) => !!(v && v.length) || "This field is required" }

Si lo cambia a lo siguiente, debería funcionar:

 rules: [ (v) => !!v || "This field is required", (v) => !!(v && v.length) || "This field is required" ]

Tenga en cuenta que en ambas versiones, está declarando funciones anónimas. Si desea mantener el nombre de la función como referencia, puede usar funciones con nombre como esta:

 rules: [ function required(v) { return !!v || "This field is required"; }, function autoComplete(v) { return !!(v && v.length) || "This field is required"; } ]
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda