【问题标题】:vue3 + vee-validate - handleSubmit doesn't return valuesvue3 + vee-validate - handleSubmit 不返回值
【发布时间】: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


文档:

https://vee-validate.logaretm.com/v4/guide/composition-api/handling-forms#javascript-submissions-ajax

我有两个问题:

  1. 为什么 submit 不为表单调用 validate() 并因此在出错时不会阻止提交?
  2. 为什么在handleForm回调参数中values是空的?

我做错了什么?

【问题讨论】:

标签: javascript vue.js vuejs3 vee-validate


【解决方案1】:

我认为您的第一个示例不起作用,因为您使用了两次 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,
    });

【讨论】:

    猜你喜欢
    • 2018-10-18
    • 2020-06-30
    • 2021-11-07
    • 2020-07-28
    • 2019-03-17
    • 1970-01-01
    • 2021-04-18
    • 2022-10-05
    • 2018-03-01
    相关资源
    最近更新 更多