Vuex基本结构

16 篇文章 0 订阅

Vuex基本结构

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

State

Vuex 使用单一状态树,用一个对象就包含了全部的应用层级状态。

使用 mapState 简化 State 在视图中的使用,mapState 返回计算属性

mapState 有两种使用的方式:

  • 接收数组参数
// 该方法是 vuex 提供的,所以使用前要先导入 
import { mapState } from 'vuex'
// mapState 返回名称为 count 和 msg 的计算属性 
// 在模板中直接使用 count 和 msg 
computed: {
  ...mapState(['count', 'msg']),
}
  • 接收对象参数

    如果当前视图中已经有了 count 和 msg,如果使用上述方式的话会有命名冲突,解决的方式:

// 该方法是 vuex 提供的,所以使用前要先导入
import { mapState } from 'vuex' 
// 通过传入对象,可以重命名返回的计算属性 
// 在模板中直接使用 num 和 
message computed: { 
...mapState({
  num: state => state.count, 
  message: state => state.msg 
})
}

Getter

Getter 就是 store 中的计算属性,使用 mapGetter 简化视图中的使用

import { mapGetter } from 'vuex'
computed: {
...mapGetter(['reverseMsg']), // 改名,在模板中使用 reverse 
...mapGetter({ reverse: 'reverseMsg' }) 
}

Mutation

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数。使用 Mutation 改变状态的好处是,集中的一个位置对状态修改,不管在什么地方修改,都可以追踪到状态的修改。可以实现高级的 time-travel 调试功能

import { mapMutations } from 'vuex' 
methods: {  
...mapMutations(['increate']), 
 // 传对象解决重名的问题 
...mapMutations({
 increateMut: 'increate' 
}) 
}

Action

  • Action 提交的是 mutation,而不是直接变更状态。

  • Action 可以包含任意异步操作。

import { mapActions } from 'vuex'
methods: { 
  ...mapActions(['increate']), 
    // 传对象解决重名的问题 
    ...mapActions({ 
    increateAction: 'increate'
  }) 
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值