vuex 学习笔记
state
记录所有数据和状态的,跨页面使用的
getters
store 里的计算属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16{
state:{
aaa:2
},
getters:{
// 通过$store.getters.aaacheng2访问
aaacheng2:state=>{
return state.aaa*2
},
// 通过$store.getters.aaacheng(6)访问
aaacheng:(state)=>(n)=>{
return state.aaa*n
}
}
}
// mapGetters 辅助函数 将 store 中的 getter 映射到局部计算属性mutation
用于修改 state 状态
1
2
3
4increment (state, n) {
state.count += n
}
store.commit('increment', 10)mapMutations
辅助函数将组件的方法映射为 store.commit 调用1
2
3
4
5
6
7
8
9
10
11methods: {
...mapMutations([
'increment', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`
// `mapMutations` 也支持载荷:
'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.commit('incrementBy', amount)`
]),
...mapMutations({
add: 'increment' // 将 `this.add()` 映射为 `this.$store.commit('increment')`
})
}action
提交 mutation 间接变更状态
保护一些常用业务操作,通过提交 mutation 改变业务中的状态
mutation 中则只包含更改 state 的方法
可以有异步操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17const store = new Vuex.Store({
state: {
count: 0,
},
mutations: {
increment(state) {
state.count++;
},
},
actions: {
increment(context) {
context.commit("increment");
},
},
});
// 调用方式
store.dispatch("increment");mapActions
辅助函数将组件的 methods 映射为store.dispatch
调用action 可以返回一个 promise
modules
把 store 分割为模块
1
2
3
4
5
6
7
8// A.js
export default {
namespaced: true,
state: {},
mutations: {},
actions: {},
getters: {},
};1
2
3
4
5
6
7
8// B.js
export default {
namespaced: true,
state: {},
mutations: {},
actions: {},
getters: {},
};1
2
3
4
5
6
7
8
9// store.js
import moduleA from "./A.js";
import moduleB from "./B.js";
const store = new Vuex.Store({
modules: {
moduleA,
moduleB,
},
});1
2
3this.$store.state.XX.XX;
this.$store.getters["XX/XX"];
this.$store.commit("XX/XX", data);
此文章版权归houxiaozhao所有,如有转载,请注明来自原作者