VueX - 1556461835/note GitHub Wiki
VueX的使用
Vue / Viex
Vuex是一个状态管理库(全局数据仓库),为应用中的所有组件提供集中式的状态存储与操作,保证了所有状态以可预测的方式进行修改。
{
data:{} //当前组件数据
}
Vuex的使用
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex)
export default new Vuex.Store({
//应用状态的数据结构
state: {
},
//
actions: {
},
mutations: {
},
getters: {
},
modules: {
}
})
getters的理解
在介绍state中我们了解到,在Store仓库里,state就是用来存放数据,若是对数据进行处理输出,比如数据要过滤,一般我们可以写到computed中。但是如果很多组件都使用这个过滤后的数据,比如饼状图组件和曲线图组件,我们是否可以把这个数据抽提出来共享?这就是getters存在的意义。我们可以认为,【getters】是store的计算属性。
辅助函数的使用
- mapaction
在组件中使用 this.$store.dispatch('xxx') 分发 action,或者使用 mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用(需要先在根节点注入 store):
import { mapActions } from 'vuex'
export default {
// ...
methods: {
...mapActions([
'increment', // 将 `this.increment()` 映射为 `this.$store.dispatch('increment')`
// `mapActions` 也支持载荷:
'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.dispatch('incrementBy', amount)`
]),
...mapActions({
add: 'increment' // 将 `this.add()` 映射为 `this.$store.dispatch('increment')`
})
}
}
mutations与actions的区别
1、流程顺序 “相应视图—>修改State”拆分成两部分,视图触发Action,Action再触发Mutation。
2、角色定位 基于流程顺序,二者扮演不同的角色。 Mutation:专注于修改State,理论上是修改State的唯一途径。 Action:业务代码、异步请求。
3、限制 角色不同,二者有不同的限制。 Mutation:必须同步执行。 Action:可以异步,但不能直接操作State。