【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 映射

相关推荐
计算机学姐1 小时前
基于SpringBoot的动漫推荐系统【协同过滤推荐算法+词云图+排行榜】
java·vue.js·spring boot·后端·mysql·intellij-idea·推荐算法
一点七加一1 小时前
Harmony鸿蒙开发0基础入门到精通Day07--JavaScript篇
开发语言·javascript·ecmascript
美狐美颜sdk5 小时前
跨平台直播美颜sdk集成攻略:Android、iOS与Web的统一方案
android·前端·ios
Airser5 小时前
npm启动Taro框架报错
前端·npm·taro
Anlici6 小时前
连载小说大学生课设 需求&架构
前端·javascript·后端
i源7 小时前
Java语言处理Js文件内容格式化
java·javascript
2501_938769997 小时前
React Server Components 进阶:数据预取与缓存
前端·react.js·缓存
“负拾捌”7 小时前
基于NodeJs实现一个MCP客户端(会话模式和无会话模式)
javascript·ai·node.js·大模型·mcp
蒜香拿铁7 小时前
Angular【基础语法】
前端·javascript·angular.js
xiaoxiao无脸男8 小时前
纯css:一个好玩的按钮边框动态动画
前端·css·css3