首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Vuelidate异步规则

如何使用Vuelidate异步规则
EN

Stack Overflow用户
提问于 2021-08-19 12:22:10
回答 1查看 959关注 0票数 0

我正在尝试向Vue中的表单添加一个自定义异步验证,并遵循有记录的例子,但是验证从未失败。这是我的代码:

代码语言:javascript
复制
<script>
import { reactive } from 'vue';
import useVuelidate from '@vuelidate/core';
import { required, email } from '@vuelidate/validators';

export default {
  template:
    '<input v-model="state.postcode" /><div v-if="v$.postcode.$silentErrors.length">never shows</div>',

  setup() {
    const state = reactive({
      postcode: 'OX14 8JW',
    });

    const rules = {
      postcode: {
        async startsWithX(value) {
          await new Promise((resolve) => setTimeout(resolve, 1000));
          const isOk = value && value[0] === 'X';
          //   console.log('sanity check: ', isOk);
          return Boolean(isOk);
        },
      },
    };

    const v$ = useVuelidate(rules, state);

    return { v$, state };
  },
};
</script>

有人能帮我让这个异步验证工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-19 18:31:09

您发布的示例链接尚未更新到最新的更改(注意侧边栏标题是“示例(过时)”)。

当前文档状态:

返回承诺的异步验证器需要包装在withAsync助手中。这将告诉pending以特殊的方式对待验证器,跟踪待定状态,存储响应等等:

代码语言:javascript
复制
//...
import { helpers } from '@vuelidate/validators'

const { withAsync } = helpers

export default {
  setup() {
    const state = reactive({
      postcode: 'OX14 8JW'
    })

    const rules = {
      postcode: {       
        startsWithX: withAsync(async (value) => {
          await new Promise((resolve) => setTimeout(resolve, 1000))
          const isOk = value && value[0] === 'X'
          return Boolean(isOk)
        })
      }
    }

    const v$ = useVuelidate(rules, state)

    return { v$, state }
  }
}

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68847820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档