为什么报错const Submit = () => { this.$refs["formRef"].validate().then(() => { console.info("通过"); }) .catch(() => { console.info("不通过"); }); }
时间: 2024-03-16 08:42:11 浏览: 61
vuex 解决报错this.$store.commit is not a function的方法
这个报错通常是因为使用箭头函数时,this指向不正确导致的。在箭头函数中,this指向的是父级作用域的this,而不是Vue实例,所以无法访问到this.$refs。
解决方法有两种:
1. 使用普通函数而不是箭头函数。可以将Submit改成普通函数,然后在调用时使用bind将this绑定到Vue实例上,这样就可以访问到this.$refs了。例如:
```
const Submit = function() {
this.$refs["formRef"].validate().then(() => {
console.info("通过");
}).catch(() => {
console.info("不通过");
});
}
// 调用时绑定this
<el-button @click="Submit.bind(this)">提交</el-button>
```
2. 在箭头函数中使用Vue实例的$refs属性时,可以使用Vue.prototype.$refs来代替this.$refs。例如:
```
const Submit = () => {
Vue.prototype.$refs["formRef"].validate().then(() => {
console.info("通过");
}).catch(() => {
console.info("不通过");
});
}
// 调用时不需要绑定this
<el-button @click="Submit">提交</el-button>
```
希望以上信息能够帮助你解决问题。
阅读全文