Vuex 模块化

文章详细介绍了在Vuex中如何实现模块化和命名空间,以提升代码可维护性和数据管理清晰度。通过开启命名空间,分别展示了组件中访问state、getters、dispatch以及commit的不同方式,包括直接访问和使用Vuex的map系列辅助函数。
摘要由CSDN通过智能技术生成

目录

1.模块化+命名空间

        1.目的:

        2.修改 store.js

        3.开启命名空间后,组件中读取state数据

        4.开启命名空间后,组件中gettters中的数据

        5.开启命名空间后,组件中调用dispatch

        6.开启命名空间后,组件中调用 commit


1.模块化+命名空间

        开启命名空间:namespaced: true

        1.目的:

                让代码更好的维护,让多种数据分类更加明确

        2.修改 store.js

        

const countAbount = {
    namespaced: true, // 开启命名空间
    state: {x: 1}
    actions: {...},
    mutations: {...},
    getters: {
        bigSum(state) {
            return state.sum * 10
        }
    }
}

const personAbount = {
    namespaced: true, // 开启命名空间
    state: {...},
    actions: {...},
    mutations: {...},
    getters :{...}
}

const store = new Vuex.Store({
    modules :{
        countAbount,
        personAbount
    }
})

        3.开启命名空间后,组件中读取state数据

// 方式一:自己直接读取
this.$store.state.personAbount.list
// 方式二:借助mapState读取
...mapState('countAbount', ['sum', 'student', 'school', 'age'])

        4.开启命名空间后,组件中gettters中的数据

// 方式一:自己直接读取
this.$store.getters['personAbount/firstPersonName']
// 方式二:借助 mapGetters 读取
...mapGetters('countAbount',['firstPersonName'])

        5.开启命名空间后,组件中调用dispatch

// 方式一:自己直 dispatch
this.$store.diapatch('personAbount/addPerson', peson)
// 方式二:借助 mapActions
...mapActios('countAbount', {incrementOdd: 'jiaOdd', incrementWait: 'jiaWait'})

        6.开启命名空间后,组件中调用 commit

// 方式一:自己直接调用 commit
this.$store.commit('personAbount/ADD_PERSON', personObj)
// 方式二: 借助 mapMutations
...mapMutations('personAbount', {addPerson: 'ADD_PERSON'})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值