我正在用 vueJS 编写一个项目。我有一个包含以下代码的组件:
import ProjectsStore from './../stores/ProjectsStore.js';
export default {
store: ProjectsStore,
data () {
return {
loading: false,
randomProject: null,
}
},
computed: {
projects () {
return this.$store.state.projects;
},
commits () {
return this.$store.state.commits;
}
},
methods : {
setCommit : ()=> {
// code here
}
},
watch: {
projects: (value) => {
this.setCommit()
}
},
mounted () {
this.$store.dispatch('loadProjectsList')
}
}
我在项目监视回调中出现以下错误:
this.setCommit is not a function
我放了一个
console.log (this)
在回调中,它显示一个默认对象而不是 VueComponent。我做错什么了吗?
谢谢你的帮助。
最佳答案
与其尝试和错误地更改语法并查看什么有效,不如了解为什么特定代码有效。
vue中提到的documentation :
不要在实例属性上使用箭头函数(例如 vm.$watch('a', newVal => this.myMethod())
)。由于箭头函数绑定(bind)到父上下文,这个不会是你期望的 Vue 实例和 this.myMethod
将是未定义的。
如果您不熟悉 es6 箭头函数 here是对箭头函数 的一个很好的解释这个装订工作。
一旦你清楚地理解了,就没有更多的尝试和错误
希望我的回答对你有所帮助
关于javascript - 方法不是观察者回调vuejs中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43965714/