vuex - Module的基本使用

module是模块的意思

vue使用单一状态树,这意味着很多状态都交给vuex进行管理,当应用比较复杂时,store对象可能会变得比较臃肿。为了解决这个问题,vuex允许将store分成模块(module),每个模块都拥有自己的state、mutations、actions、getters、module

module中的state

  1. 模块a
const moduleA = {
  state: {},
  mutations: {},
  actions: {},
  getters: {}
}
export default new Vuex.Store({

  // 划分模块
  modules: {
    a: moduleA
  }
 })
  1. 存放状态
const moduleA = {
  state: {
    name:'aaa'
  },
  mutations: {},
  actions: {},
  getters: {}
}
  1. 在App.vue中显示
    虽然建立了模块a,但是vuex内部是将模块a放入了state中,所以需要从state中将a取出
<h2>{{$store.state.a.name}}</h2>

在这里插入图片描述

module中的mutations

例子:修改state中的名字

mutations: {
    updateName(state, payload) {
      state.name = payload
    }
  },
<h2>{{$store.state.a.name}}</h2>
<button @click="updateName">修改名字</button>

模块中mutations也是使用commit,它会先去根部mutations中寻找,如果没有,再去模块中的mutations中寻找。

updateName() {
      this.$store.commit("updateName", "bbb");
    }

在这里插入图片描述

module中的getters

  1. 基本使用
getters: {
    addName(state) {
      return state.name + '111';
    }
  }

App.vue中展示

<h2>{{$store.getters.addName}}</h2>

在这里插入图片描述
2. 传入参数

addName2(state, getters) {
      return getters.addName + '222';
    }
<h2>{{$store.getters.addName2}}</h2>

在这里插入图片描述
3. 获取根部state中的数据

export default new Vuex.Store({
  state: {
    counter: 0,
  }
 })
addName3(state, getters, rootstate) {
      return getters.addName2 + rootstate.counter;
    }
<h2>{{$store.getters.addName3}}</h2>

在这里插入图片描述

module中的actions

例子:点击按钮,修改名字

mutations: {
    updateName(state, payload) {
      state.name = payload
    }
  },
actions: {
    // 这里的context只是指模块中的mutations
    aUpdateName(context) {
      setTimeout(() => {
        context.commit('updateName', '999')
      }, 1000)
    }
  },

在App.vue页面

<button @click="updateN">修改名字</button>
updateN() {
      this.$store.dispatch("aUpdateName");
    }

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值