vue3 + vee-validate - handleSubmit 没有 return 值
vue3 + vee-validate - handleSubmit doesn't return values
我正在使用最新的 vue@3.1.2 和 Composition API。我想根据他们的文档使用当前的 vee-validate@4.4.5。但是当使用 handleSubmit
时,没有任何效果如我所料。
<form @submit="onSubmit">
<div class="mb-3">
<label for="edit-email" class="form-label">E-mail</label>
<input
id="edit-email"
name="email"
class="form-control"
v-model="email"
type="text"
/>
<div class="invalid-feedback">{{ emailError }}</div>
</div>
<button class="btn btn-primary" type="submit">Save</button>
</form>
import { useField, useForm } from "vee-validate";
import { object, string } from "yup";
export default {
name: "App",
setup() {
const { handleSubmit } = useForm();
const onSubmit = handleSubmit((values) => {
console.log(values, submitCount.value); // values is empty: {}
});
const schema = object({
email: string().required().email(),
});
useForm({
validationSchema: schema,
initialValues: {
email: "",
},
});
const { value: email, errorMessage: emailError } = useField("email");
return {
email,
emailError,
onSubmit,
};
},
};
复现问题:
https://codesandbox.io/s/vue3-vee-validate-handlesubmit-with-no-values-oj0ot?file=/src/App.vue
文档:
我有两个问题:
- 为什么提交不为表单调用
validate()
,结果在出错时不阻止提交?
- 为什么在
handleForm
回调参数中 values
是空的?
我做错了什么?
我认为您的第一个示例不起作用,因为您使用了 useForm
两次并且必须使用一次
我已经在您的示例中测试了这段代码,它对我有用
let response = ref("Empty.");
const schema = object({
email: string().required().email(),
password: string().required().min(4),
});
const { errors: formErrors, handleSubmit, setFieldError, submitCount } = useForm({
validationSchema: schema,
initialValues: {
email: "",
password: "",
},
// validateOnMount: true,
});
我正在使用最新的 vue@3.1.2 和 Composition API。我想根据他们的文档使用当前的 vee-validate@4.4.5。但是当使用 handleSubmit
时,没有任何效果如我所料。
<form @submit="onSubmit">
<div class="mb-3">
<label for="edit-email" class="form-label">E-mail</label>
<input
id="edit-email"
name="email"
class="form-control"
v-model="email"
type="text"
/>
<div class="invalid-feedback">{{ emailError }}</div>
</div>
<button class="btn btn-primary" type="submit">Save</button>
</form>
import { useField, useForm } from "vee-validate";
import { object, string } from "yup";
export default {
name: "App",
setup() {
const { handleSubmit } = useForm();
const onSubmit = handleSubmit((values) => {
console.log(values, submitCount.value); // values is empty: {}
});
const schema = object({
email: string().required().email(),
});
useForm({
validationSchema: schema,
initialValues: {
email: "",
},
});
const { value: email, errorMessage: emailError } = useField("email");
return {
email,
emailError,
onSubmit,
};
},
};
复现问题:
https://codesandbox.io/s/vue3-vee-validate-handlesubmit-with-no-values-oj0ot?file=/src/App.vue
文档:
我有两个问题:
- 为什么提交不为表单调用
validate()
,结果在出错时不阻止提交? - 为什么在
handleForm
回调参数中values
是空的?
我做错了什么?
我认为您的第一个示例不起作用,因为您使用了 useForm
两次并且必须使用一次
我已经在您的示例中测试了这段代码,它对我有用
let response = ref("Empty.");
const schema = object({
email: string().required().email(),
password: string().required().min(4),
});
const { errors: formErrors, handleSubmit, setFieldError, submitCount } = useForm({
validationSchema: schema,
initialValues: {
email: "",
password: "",
},
// validateOnMount: true,
});