javascript - 方法不是观察者回调vuejs中的函数

标签 javascript vue.js

我正在用 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/

相关文章:

javascript - 我怎样才能有 2 个具有动态高度值的粘性标题

Vue.js 在 ajax 请求期间禁用组件

javascript - 没有 Vue 可以使用 Vuex 吗? (Vuex 服务器端?)

javascript - Vue 和 Vuex : computed property isn't called when changing state

javascript - 循环读取 igHierarchicalGrid 网格中的所有行

javascript - 如何在reactjs中获取dropzone中的所有名称

authentication - nuxtjs与后端API之间的授权

laravel-5 - 单击浏览器的后退 <- 按钮时,Json 将显示在 Vue 组件上

javascript - React hooks 'useState()' updater 函数与表单提交上的 axios.post

java - 在liferay中使用ajax