【发布时间】:2021-09-09 01:21:20
【问题描述】:
我正在使用最新的 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
文档:
我有两个问题:
- 为什么 submit 不为表单调用
validate()并因此在出错时不会阻止提交? - 为什么在
handleForm回调参数中values是空的?
我做错了什么?
【问题讨论】:
-
我创建了一个可行的解决方案,但使用表单、字段组件:codesandbox.io/s/vue3-vee-validate-form-field-klq81?file=/src/…。但我想找到为什么我的第一种方法不起作用的答案。
标签: javascript vue.js vuejs3 vee-validate