首页 > 解决方案 > 突变和动作有什么区别

问题描述

在 Vuex 中,同时具有“动作”和“突变”的逻辑是什么?

我理解组件无法修改状态的逻辑(这似乎很聪明),但同时拥有动作和突变似乎你正在编写一个函数来触发另一个函数,然后改变状态。

“动作”和“突变”之间有什么区别,它们如何协同工作,更重要的是,我很好奇 Vuex 开发人员为什么决定这样做?

我试过了 .......

import Vuex from 'vuex'

const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    INCREMENT (state) {
      // mutate state
      state.count++
    }
  }
})

错误代码 502

标签: javascriptvue.jsvuex

解决方案


动作和突变的行为相似,因此不同之处在于:

  • Actions 不能直接改变你的 state,所以他们需要对你的 mutation 提交一个操作。
  • 思考像你的函数这样的动作。
  • 突变负责修改您在 Vuex 商店中的状态。要调用突变,您必须提交调用突变的操作。

例子:

 actions: {
    MODIFY({dispatch, commit, getters, rootGetters}, obj) {
        //Do something
        commit('mymutation', obj)
    }
}

mutations: {
    mymutation(state, obj) {
        store.state.count = 1
    }
}

您可以在Vuex 文档中查看有关突变和操作的更多信息


推荐阅读