Vuex知识总结

一,图解Vuex

二,Vuex核心概念

1.state

唯一的数据源:我们需要把任何一个组件中需要抽取出来的变量放入到state中去

单一的状态树:只要把store注册到app.js中,所有组件都可以使用其中的状态

官网定义:

2.Getter

通过Getters可以派生出一些新的状态

注意:getter 在通过属性访问时是作为 Vue 的响应式系统的一部分缓存其中的。

注意:getter 在通过方法访问时,每次都会去进行调用,而不会缓存结果。

官网定义:

3.Mutation

更改Vuex的store中的状态的唯一方法时提交mutation 

传入额外参数方式【提交载荷(Payload)】

1.

store.commit('increment', 10)

2.载荷是对象 

// ...
mutations: {
  increment (state, payload) {
    state.count += payload.amount
  }
}
store.commit('increment', {
  amount: 10
})

3.对象风格的提交方式

提交 mutation 的另一种方式是直接使用包含 type 属性的对象:

store.commit({
  type: 'increment',
  amount: 10
})

当使用对象风格的提交方式,整个对象都作为载荷传给 mutation 函数,因此处理函数保持不变:

mutations: {
  increment (state, payload) {
    state.count += payload.amount
  }
}

 

 注意:Mutation 必须是同步函数的原因?

回调函数中数据状态的改变无法追踪

官网定义:

4.Action 

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

注意: store.dispatch 可以处理被触发的 action 的处理函数返回的 Promise,并且 store.dispatch 仍旧返回 Promise

官网定义:

5.module

注意:

 

三,疑惑问题整理

1.this.$store.dispatch和this.$store.commit区别

this.$store.dispatch:异步操作,将数据提交至action中,在action中可以向后台发起数据请求操作,获取到数据再通过commit方法提交至mutations中。

this.$store.commit:同步操作,可直接将数据提交至mutations中。

根据数据的实际情况进行两种方式的选择!

2.Vuex模块化情况下...mapState,...mapGetters,...mapAction,...mapMutations,获取对应模块下的数据操作方法

比如:...mapActions('模块名', ['方法']) 其他的类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值