Vue3组合式API中使用Vuelidate提交前表单验证报错问题
Vue3组合式API中Vuelidate验证方法报错的解决办法
在Vue3 <script setup> 中使用Vuelidate时,你遇到的TypeError: v$.$validate is not a function错误,核心原因是组合式API与Options API的Vuelidate实例方法名不一致:
- Options API中,验证实例的全局验证方法是
$validate() - 而通过
useVuelidate返回的组合式API实例,对应的全局验证方法是validate()(没有前缀$)
你在模板的@submit事件中直接写v$.validate()能正常运行,是因为模板中Vuelidate实例被做了代理处理,会自动兼容属性/方法的访问,但在<script setup>的JS代码里,必须使用正确的方法名。
修正后的提交处理代码
const submitHandler = async () => { try { // 替换 v$.$validate() 为 v$.validate() const isFormCorrect = await v$.validate() if (isFormCorrect) { console.log('Submit Fired') // 执行实际的表单提交逻辑 } else { // 验证失败的处理逻辑 } } catch (error) { console.warn({error}) } }
额外:验证指定分组
如果你想只验证你定义的allProductData分组,可以给validate()方法传入分组名称:
const isGroupValid = await v$.validate('allProductData')
内容的提问来源于stack exchange,提问作者Georgy Martynovich
相关产品推荐
相关产品推荐

