vue——vuex模块化操作

当state信息足够庞大时,需要使用模块化把state数据分开管理

1、新建js文件,导出一个对象,对象中包含vuex的参数(state、getters、mutations、actions等),在对象中要包含 namespaced:true 属性,设置带命名空间以进行数据访问。

export default{
    namespaced:true,//带命名空间
    state:{
        users:''
    },
    getters:{
        users(state){
            return state.users
        }
    },
    mutations:{
        changeUsers(state,payload){
            state.users=payload
        }
    },
    actions:{
        CHANHE_USERS({commit},payload){
            commit('changeUsers',payload)
        }
    }
}

2、把子模块的js文件导入到vuex的js主文件(假设为index.js)中,在index.js文件中导入模块文件,其中对模块文件的命名作为createNamespacedHelpers 的访问入口,在vuex对象中添加modules对象,在modules中注册子模块

import Vue from 'vue'
import Vuex from 'vuex'
import rules from './modules/rules'
import users from './modules/users'

Vue.use(Vuex)

export default new Vuex.Store({
//注册vuex模块
    modules:{
        rules,
        users
    }
})

3、在vue文件中访问

<script>
import {mapActions,mapGetters,createNamespacedHelpers} from 'vuex'
//使用createNamespacedHelpers 需要在模块中添加namespaced:true属性,其中参数的js文件导入时的模块名
const users=createNamespacedHelpers('users')
const rules=createNamespacedHelpers('rules')
    export default {
        methods:{
            ...mapActions(['CHUANGE_NUM']),
            // ...users.mapActions()
        },
        computed:{
            ...mapGetters(['c','d']),
            ...users.mapGetters(['users']),
            ...rules.mapGetters(['admin'])
        }
    }
</script>

4、包含命名空间的函数调用

$store.state.b.count

$store.commit('b/addcount')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值