Vue Vuex模块化编码

举报
生产的的驴 发表于 2023/11/29 16:01:45 2023/11/29
【摘要】 正常写vuex的index的时候如果数据太多很麻烦,如有的模块是管理用户信息或修改课程等这两个是不同一个种类的,如果代码太多会造成混乱,这时候可以使用模块化管理 原始写法如果功能模块太多很乱import Vue from 'vue'import Vuex from 'vuex'//导入VuexVue.use(Vuex)const actions = { addSum(context, ...

正常写vuex的index的时候如果数据太多很麻烦,如有的模块是管理用户信息或修改课程等这两个是不同一个种类的,如果代码太多会造成混乱,这时候可以使用模块化管理

原始写法

如果功能模块太多很乱

import Vue from 'vue'
import Vuex from 'vuex'
//导入Vuex

Vue.use(Vuex)

const actions = {

    addSum(context, value) {
        //context 上下文里面有commit函数 value 是组件传过来的值
        context.commit('AddSum', value)
        //获取到了数据 操作数据
    },

    //获取数据 如发起请求等
}


const mutations = {


    AddSum(state, value) {
        state.sum += value
        //这样就完成了赋值
    }
    
    //操作数据
}

const state = { sum: 0 }
//保存数据


//暴露出去给别人使用
export default new Vuex.Store({
    actions, mutations, state

})

模块化写法

6e4cf9549e61b4d4c52de3820c077cf3_0620a24249114deca40e35eef0e7d756.png

f1c96ec6e60a550a8bd5cf7ffc5c3628_146a4fc3b3c346e4ba454b56f62e949f.png

如果代码逻辑特别多可以分文件细化

import Vue from "vue";
import Vuex from 'vuex'
Vue.use(Vuex)


//用户信息模块
const userList =
{
    namespaced: true,//开启命名空间  true开启才可以怎样获取数据   ...mapState('classList',['方法名','方法名'])
    actions: {},  //获取数据 如发起请求等
    mutations:
    {
        getUserId(state, value) {
            state.user_id = value
        } //获取用户ID


    },  //操作数据
    state: { user_id: '' },// //保存数据
    getters: {}//计算

}



//班级模块
const classList =
{
    namespaced: true,//开启命名空间  true开启才可以怎样获取数据   ...mapState('classList',['方法名','方法名'])
    actions: {},  //获取数据 如发起请求等
    mutations: {},  //操作数据
    state: { class_id: '' },// //保存数据
    getters: {}//计算

}




export default new Vuex.Store({
    modules: { userMsg: userList, classMsg: classList }
    //获取userList需要从userMsg获取
})
import { mapState,mapMutations,mapActions } from 'vuex';

写入数据

 <button @click="getUserId('dpc520')"></button>
 <!--使用map必须使用这种方法传值-->
 ...mapMutations('userMsg',['getUserId'])

读取数据

<h1>{{ user_id }}</h1>
computed: {
    ...mapState('userMsg', ['user_id'])
    //第一个参数表示从vuex里的userMsg对象获取state的user_id值
    }

模块化原始方法 commit getters

commit

模块化使用原始方法赋值需要这样写

   <button @click="test()">原始赋值</button>

区别终于 / 号

 test() {
this.$store.commit('userMsg/getUserId', '123')
     }

getters

this.$store.getters['xxx/xxx']
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。