Я пытаюсь использовать vee-validate с zod, используя Composition API и собственные сообщения об ошибках.
Проблема в том, что если я нажму на вход и сразу же щелкну за его пределами, появится сообщение об ошибке Zod по умолчанию «Требуется». Правильное пользовательское сообщение об ошибке «Требуется название компании» будет отображаться только в том случае, если я введу текст во входные данные, а затем удалю его.
Как мне остановить отображение сообщения об ошибке по умолчанию? Всегда должно использоваться собственное сообщение об ошибке.
Вот живая версия: https://stackblitz.com/edit/nuxt-starter-qlkfhp?file=comComponents%2FMyForm.vue
<template>
<form class = "m-6">
<InputText v-model = "businessName" v-bind = "businessNameAttrs" />
<div>{{ errors.businessName }}</div>
</form>
</template>
<script setup lang = "ts">
import { defineComponent } from 'vue';
import { z } from 'zod';
const formSchema = toTypedSchema(
z.object({
businessName: z.string().min(1, { message: 'Business name is required' }),
})
);
const { errors, handleSubmit, defineField } = useForm({
validationSchema: formSchema,
});
const [businessName, businessNameAttrs] = defineField('businessName');
</script>
для этого вы можете использовать клавишу required_error
:
Например:
const formSchema = toTypedSchema(
z.object({
businessName: z
// add required_error key over here
.string({ required_error: 'Business name is required' })
.min(1, { message: 'Business name is required' }),
})
);
Там также есть другой ключ, который вы можете использовать вы можете проверить здесь