1,什么时候用modules

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割
在模块中使用:namespaced: true, 命名空间,添加之后,当前模块下的标识符可以和其它模块相同,用于解决不同模块的命名冲突问题

2,store文件结构

3.1 index.js中手动引入modules

import Vue from 'vue'
import Vuex from 'vuex'import bus from './modules/bus'
import app from './modules/app'const path = require('path')Vue.use(Vuex)let store = new Vuex.Store({state: {},mutations: {},actions: {},modules: {namespaced: true,app,bus}
});export default store

3.2 index.js 中动态引入modules

import Vue from 'vue'
import Vuex from 'vuex'
const path = require('path')Vue.use(Vuex)const files = require.context('./modules', false, /\.js$/)
let modules = {}
files.keys().forEach(key => {let name = path.basename(key, '.js')modules[name] = files(key).default || files(key)
})let store = new Vuex.Store({state: {},mutations: {},actions: {},modules
});export default store

4,app.js 文件中代码

let user = {namespaced: true,state: {},mutations: {setUser(state, val) {state.user = val;}},getters: {},actions: {setName(state, val) {return new Promise(resolve => {setTimeout(function () {state.user = val;resolve(state.user);}, 2000)})}}
}export default user;

 5,配置main.js,挂载store

new Vue({el: '#app',router,store,components: { App: App },template: '<App/>'
})

6,vue中使用

    // commit 执行mutations里的方法,同步操作this.$store.commit('app/setUser', {name: '张三'});console.log(this.user.name);// dispatch 执行actions里的方法,异步操作this.$store.dispatch('app/setName', {name: '李四'}).then(res => {console.log(res.name);})

7,js中使用

// 引入 这里的store 就相当于页面中的 this.$store
import store from '@/store'export const setCurUser = (user) => {let curUser = store.app.userif(!curUser) {store.commit("app/setUser", user)return user}return curUser
}

注意:

1,vue和vuex的版本搭配

vue2使用vuex3;vue3使用vuex4. 否则会出现this.$store为undefined错误

延伸:

1,vuex的五种状态 state、getter、mutation、action、module

state:所有共享数据统一放到state中,与data类似

mutation: 类似于事件,用于改变状态

action: 和mutation相似,但是action是异步操作

getter: 类似vue中的computed,进行缓存,形成新的数据

modules: 分模块,大型项目一个对象管理会很臃肿

【vue】vuex中modules的基本用法相关推荐

  1. vuex中mapState和mapMutations用法

    // 1导入 Vue 和Vuex import Vue from 'vue' import Vuex from 'vuex' // user.js 就是分模块导入, moduleUser 导入的名字随 ...

  2. [vue] Vuex中四个map方法的使用 mapState mapGetters mapActions mapMutations

    1. mapState方法: 用于帮助我们映射state中的数据为计算属性 computed: {//借助mapState生成计算属性:sum.school.subject(对象写法)...mapSt ...

  3. [Vuex系列] - Vuex中的getter的用法

    Vuex 允许我们在store中定义"getter"(可以认为是store的计算属性).就像计算属性一样,getter的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变 ...

  4. vue.js中watch的六种用法(附实例解析)

    文章目录 监听器 watch Watch 用法1:常见用法 Watch 用法2:绑定方法 Watch 用法3:deep + handler Watch 用法4:immediate initWatch ...

  5. 记录使用Vue过程中的各种插件及教程(不定时更新)

    本文为整理记录本人从18年初开始上手使用Vue以后,针对项目中业务需求所用到的各种插件及教程整理?. 目前市场上常用的三大Vue桌面端UI组件库:Element.iView.Ant Design Vu ...

  6. vue之mapMutaions的使用 vuex中 action 用法示例 api.js的使用

    vue之mapMutations的使用 我们通过Mutation来改变store中的state,方法往往是在子组件中使用 this.$store.commit(); 来实现,但是这样的缺点是不容易查看 ...

  7. vue 将数据保存到vuex中

    在项目中遇到这样一个问题,就是在登入的时候同时需要从后台获取到左边的导航,但是如果使用h5的localStorage来保存导航信息,会出现app加载进去之后localStorage才保存进浏览器,在m ...

  8. vue组件中数据共享——vuex

    目录 vuex是什么? 使用vuex统一管理状态的好处 什么样的数据适合存储到vuex中 安装vuex 使用vuex vuex核心概念 组件访问state中数据的第一种方式: 组件访问state中数据 ...

  9. 在vue项目中引入vuex(全局状态管理器)

    目录 Vuex是什么? State Getter Mutation Action Module 项目结构 Vuex是什么? Vuex是一个专为Vue.js应用程序开发的状态管理模式.它采用集中式存储管 ...

最新文章

  1. 判断是否为自然数java_java判断输入的是否是自然数
  2. Spring 构造注入 传參数
  3. Android系统的开机画面显示过程分析
  4. 清华计算机本科待遇,2021年清华大学报考信息出炉 计算机专业最吃香
  5. struts2升级jar包遇到无法正常访问action的方法的问题
  6. Telerik RadGridView 右键菜单如何设置?
  7. Asp.net源码上周更新目录(5.12-5.18)
  8. 混迹职场,有交换意识的人都是聪明人
  9. linux 系统性能分析常用命令
  10. 关于Excel的几点高级应用
  11. Round 2—算法的复杂度
  12. 中M22春C、Java入门练习( 7-13 后天 )
  13. Low-Light Enhancement 数据集 和 论文代码
  14. 极速掌握HTML(一)基础入门
  15. 神还原女神照片!GAN 为百年旧照上色
  16. 解决数字小键盘按shift+ 数字才可以使用的问题
  17. 线条边框简笔画图片大全_各种简笔画边框大全_边框简单又漂亮简笔画
  18. keras中的Convolution1D
  19. socket编程之socket()
  20. SpringBoot SSO整合

热门文章

  1. 属性-Yii 基础-深入理解YII2.0(1.1)
  2. Spark环境搭建(Hadoop YARN模式)
  3. 台式计算机电池能充电吗,笔记本电脑能一直插着电源充电吗?为什么?
  4. Tomcat部署(从新手村到小有成就8)
  5. Paper Reading: Generating Artistic Portrait Drawings from Face Photos with Hierarchical GANs
  6. VirtualBox 桥接网卡设置
  7. sql 四舍五入 保留两位小数
  8. Java学习篇七——循环结构之 for 语句
  9. verilog 算法加速模块设计流程_基于FPGA的图像加速器的设计
  10. App优化(五)电量优化