Javascript 在Vuex中,可以跳过操作并直接从组件提交突变吗?

Javascript 在Vuex中,可以跳过操作并直接从组件提交突变吗?,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,每次出现这个问题,答案都是一样的-操作是针对异步性的。我知道在未来版本的Vuex中,动作和突变将被合并 但是,我可以直接从组件方法进行异步调用。例如,为什么这被认为是一种不好的做法?异步性在这里不是问题。那么为什么我甚至需要行动呢 methods: { async fetchTodos() { this.$store.commit('isLoading', true) const result = await Todos.fetchAll()

每次出现这个问题,答案都是一样的-操作是针对异步性的。我知道在未来版本的Vuex中,动作和突变将被合并

但是,我可以直接从组件方法进行异步调用。例如,为什么这被认为是一种不好的做法?异步性在这里不是问题。那么为什么我甚至需要行动呢

methods:
{
    async fetchTodos()
    {
        this.$store.commit('isLoading', true)

        const result = await Todos.fetchAll()

        this.$store.commit('setTodos', result.data)
        this.$store.commit('isLoading', false)
    }
},

这与调用提交的代码中的异步无关,而是与动作本身的异步有关。我知道在Vuex的未来版本中,动作和突变将被合并—有链接吗?这将是一个合理的举动,但我不知道这一点。我可以直接从我的组件方法执行异步调用——从技术上讲,您可以在不使用Vuex的情况下执行Vuex提供的操作。例如,为什么这被认为是一种不好的做法它打破了关注点之间的分离。业务逻辑属于存储,表示属于组件。原则不是一成不变的,可以被打破,但在实践中,这往往会导致混乱的代码,难以测试、维护和重用。@EstusFlask关于动作和突变的合并:如果你想在另一个组件中重用
fetchTodos
,那么你可能会想将它变成一个动作。如果您使用的是Vuex模块,那么操作也可以用于在其他模块中执行突变。这与调用提交的代码中的异步无关,而是与操作本身的异步有关,我知道在Vuex的未来版本中,操作和突变将被合并-有链接吗?这将是一个合理的举动,但我不知道这一点。我可以直接从我的组件方法执行异步调用——从技术上讲,您可以在不使用Vuex的情况下执行Vuex提供的操作。例如,为什么这被认为是一种不好的做法它打破了关注点之间的分离。业务逻辑属于存储,表示属于组件。原则不是一成不变的,可以被打破,但在实践中,这往往会导致混乱的代码,难以测试、维护和重用。@EstusFlask关于动作和突变的合并:如果你想在另一个组件中重用
fetchTodos
,那么你可能会想将它变成一个动作。如果您使用的是Vuex模块,那么操作也可以用于在其他模块中执行突变。