【Vue】核心概念 - module

目标

掌握核心概念 module 模块的创建

问题

由于使用单一状态树 ,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。

这句话的意思是,如果把所有的状态都放在state中,当项目变得越来越大的时候,Vuex会变得越来越难以维护

由此,又有了Vuex的模块化


模块定义 - 准备 state

新建store/modules文件夹

定义两个模块 usersetting

user中管理用户的信息状态 userInfo modules/user.js

jsx 复制代码
const state = {
  userInfo: {
    name: 'zs',
    age: 18
  }
}

const mutations = {}

const actions = {}

const getters = {}

export default {
  state,
  mutations,
  actions,
  getters
}

setting中管理项目应用的 主题色 theme,描述 desc, modules/setting.js

jsx 复制代码
const state = {
  theme: 'dark', // 主题色
  desc: '描述真呀真不错'
}

const mutations = {}

const actions = {}

const getters = {}

export default {
  state,
  mutations,
  actions,
  getters
}

store/index.js文件中的modules配置项中,注册这两个模块

js 复制代码
import user from './modules/user'
import setting from './modules/setting'

const store = new Vuex.Store({
    modules:{
        // user: user 同名可简写
        user,
        setting
    }
})

检验是否配置成功:通过vue的调试工具

使用模块中的数据, 可以直接通过模块名访问 $store.state.模块名.xxx => $store.state.setting.desc

也可以通过 mapState 映射

相关推荐
Devin_chen3 分钟前
4.前端使用Node + MongoDB + Langchain消息管理与聊天历史存储
前端·langchain
前端er小芳7 分钟前
前端文件 / 图片核心 API 全解析:File、FileReader、Blob、Base64、URL
前端
twl9 分钟前
探索Agent RAG: 一文讲清楚从理论到具体落地
前端
FinClip11 分钟前
赢千元好礼!FinClip Chatkit “1小时AI集成挑战赛”,邀你来战!
前端
实习生小黄14 分钟前
vue3静态文件打包404解决方案
前端·vue.js·vite
啃火龙果的兔子17 分钟前
Capacitor移动框架简介及使用场景
前端
yuanyxh29 分钟前
程序设计模版
前端
小满zs31 分钟前
Next.js第二十章(MDX)
前端·next.js
愚坤37 分钟前
前端真有意思,又干了一年图片编辑器
前端·javascript·产品
文心快码BaiduComate42 分钟前
用Comate开发我的第一个MCP——让Vibe Coding长长脑子
前端·后端·程序员