本文小编为大家详细介绍“vuex怎么模块化编码和命名空间”,内容详细,步骤清晰,细节处理妥当,希望这篇“vuex怎么模块化编码和命名空间”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
模块化编码+命名空间
小a:“为啥要开启这个捏?”山鱼:“当然是让代码更好维护,让多种数据分类更加明确。”
小a:“那如何才能做到模块化编码+命名空间呢”
山鱼:“只需要这样即可”
// Count的相关配置
export default {
namespaced: true,
actions: {
// 奇数加法
jiaodd(context, value) {
if (context.state.sum % 2) {
context.commit('JIA', value)
}
},
// 延迟加
jiaWait(context, value) {
setTimeout(() => {
context.commit("JIA", value)
}, 500);
},
},
mutations: {
JIA(state, value) {
state.sum += value
},
JIAN(state, value) {
state.sum -= value
},
},
state: {
sum: 0, // 当前和
school: '山鱼小学',
subject: '前端',
},
getters: {
bigSum(state) {
return state.sum * 10
}
}
}
2.开启命名空间后读取state的数据
computed: {
// 自己读取
personList() {
returnthis.$store.state.personAbout.personList;
},
sum() {
returnthis.$store.state.countAbout.sum;
},
},
// 借助mapState读取
computed: {
...mapState("countAbout", ["sum", "subject", "school"]),
...mapState("personAbout", ["personList"])
},
3.开启命名空间后,组件中读取getters数据
computed: {
// 自己读取
firstName() {
returnthis.$store.getters["personAbout/firstPersonName"];
}
},
methods: {
// 借助mapGetters读取
// 借助mapMutations生成对应的方法,方法种会调用相应的commit去联系mutations
...mapMutations('countAbout',{ increment: "JIA", decrement: "JIAN" }), // 对象式
...mapActions('countAbout',{ incrementOdd: "jiaodd", incrementWait: "jiaWait" }) //对象式
},
4.开启命名空间后,组件中调用dispatch
methods: {
// 直接dispath
addWang() {
constpersonObj= { id: nanoid(), name: this.name };
this.$store.dispatch("personAbout/addNameWang", personObj);
this.name="";
},
},
//借助mapGetters读取:
computed: {
...mapGetters('countAbout',['bigSum'])
},
5.开启命名空间后,组件中调用commit
methods: {
// 直接调用
add() {
constpersonObj= { id: nanoid(), name: this.name };
this.$store.commit("personAbout/ADD_PERSON", personObj);
this.name="";
},
}
methods: {
// 借助mapMutations生成对应的方法,方法种会调用相应的commit去联系mutations
...mapMutations('countAbout',{ increment: "JIA", decrement: "JIAN" }), // 对象式
},
}