【vue】vuex中modules的基本用法

news2024/11/15 17:37:01

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: {
    user: {}
  },
  mutations: {
    setUser(state, val) {
      state.user = val;
    }
  },
  getters: {},
  actions: {
  }
}

export default user;

 5,配置main.js,挂载store

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

6,vue中使用

  mounted () {
    this.$store.commit('app/setUser', {name: '张三'});
    console.log(this.$store.state.app.user.name);
  }

7,js中使用

// 引入 这里的store 就相当于页面中的 this.$store
import store from '@/store'

export const setCurUser = (user) => {
    let curUser = store.app.user
    if(!curUser) {
        store.commit("app/setUser", user)
        return user
    }
    
    return curUser
}

注意:

1,vue和vuex的版本搭配

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NFT交易平台开发 创建NFT数字藏品平台

为什么需要 NFT 市场&#xff1f; NFT Marketplace 允许用户购买、出售、交易、查看或创建自己的 NFT&#xff0c;就像他们需要一个市场来购买物理或数字世界中的大多数产品一样。几乎每个人都可以进入 NFT 市场&#xff0c;但要做到这一点&#xff0c;用户必须满足以下要求&a…

第3关:节点状态检查、数据查看和更新

首先&#xff0c;需要启动服务器&#xff0c;并使用zkCli.sh连接服务器&#xff0c;进入客户端命令行界面&#xff08;如第一关所述&#xff09;。 节点状态包含以下信息&#xff1a; czxid: 节点创建时的时间戳。mzxid: 节点最新一次更新发生时的时间。ctime&#xff1a; 节…

[附源码]java毕业设计篮球装备商城系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

微服务中的服务发现是什么?

作者&#xff1a;罗泽轩 摘要&#xff1a;本文通过服务发现的相关背景和 APISIX 对于服务发现的应用与实践&#xff0c;来介绍微服务中的服务发现内容。 在互联网刚开始出现的年代&#xff0c;人们要想访问某个在线服务&#xff0c;需要输入一长串的 IP 地址。IP 地址虽然不长&…

PDF怎么编辑修改文字?

PDF怎么编辑修改文字&#xff1f;PDF大家都不陌生&#xff0c;我们经常会接触到各种类型的PDF文档&#xff0c;尽管大多数人对PDF的需求仅仅是阅读&#xff0c;但是也有很多人会需要去编辑和修改PDF文件&#xff0c;那你们知道如何编辑和修改PDF文件吗&#xff1f;金闪PDF编辑器…

提取图像直方图(图像处理)

继直方图规定化后的研究 由于直方图规定化是根据两张图片的累计直方图进行图像的处理。对于这个处理过程&#xff0c;我尝试了很图像进行替换色系&#xff0c;但是没有找到一个相对合适案例&#xff0c;来体现直方图规定化这个算法的精妙之处。在多次尝试中&#xff0c;我发现…

低代码核心:代码生成还是模型解释?

2020年第一届低代码研讨会上&#xff0c; Jordi Cabot发表了一篇文章&#xff08;或者说观点&#xff09;&#xff0c;对比了低代码和模型驱动开发的关系&#xff0c;认为低代码等于模型驱动开发。但实际上&#xff0c;不少低代码系统并不是使用模型驱动的&#xff0c;而是采用…

node的express模块

express的概述: express是一个提供web服务的框架&#xff08;内置http模块&#xff09;&#xff0c;他简化了http的相关内容&#xff0c;将对应的内容封装为了特定的方法 安装: npm i express -S 导入以及代码: //导入express 是一个函数 const expressrequire(express) //cre…

做机器人开发,你一定绕不开的模块!

Allspark 机载电脑 Allspark 是阿木实验室为广大AI智能硬件开发者打造的一款微型边缘计算机。在设计之初就定义了尺寸小巧、重量轻、算力强、可靠、扩展性高的特点。Allspark机身采用铝合金新材料外壳设计&#xff0c;内置静音散热风扇&#xff0c;尺寸94mm*59mm*37mm&#xff…

[附源码]java毕业设计警院学生学习交流系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux进程常见通信方式

文章目录1、管道<1>匿名管道<2> 命名管道2、共享内存3、信号量为什么要进程要进行通信呢&#xff1f; 进程间可能存在特定的协同工作的场景&#xff0c;这个时候就需要一个进程把自己的数据交付给另一个进程&#xff0c;让其进行处理。 进程通信的本质 因为进程具有…

OAuth2.o的授权码模式为什么要用code获取token?

授权码模式&#xff08;Authorization Code&#xff09;是 OAuth 功能最齐全、流程最严谨&#xff0c;也是最常用的授权模式。 假设我们要用微信账号登录网易云音乐&#xff0c;需要以下五步&#xff1a; 访问网易云音乐客户端&#xff0c;客户端跳转到微信授权页面&#xff…

神经网络初体验

文章目录前言相关概念BP神经网络具体过程正馈反向传播总结前言 本博客仅做学习笔记&#xff0c;如有侵权&#xff0c;联系后即刻更改 科普&#xff1a; 参考博客:《老饼讲解神经网络》 相关概念 神经网络 模仿人的神经网络构建出来的数学模型 是人工智能的一个主力算法 神经…

STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了)

STM32 BSRR BRR ODR 寄存器解析&#xff08;F4系列已经去掉BRR寄存器了&#xff09;一、用法二、解释三、BSRR、BRR、 ODR 之间的关系G0x0系列GPIO寄存器 F4系列GPIO寄存器&#xff08;没有BRR寄存器了&#xff09; 一、用法 经常会看到类似如下的宏定义语句&#xff0c;用…

tomcat出现中文乱码原因和解决办法(简单快捷易懂)

一、遇到问题 双击打开tomcat中的bin目录下的startup.bat会出现乱码问题 或者cmd里面打开也是乱码的问题 二、出现这个问题的原因 这是因为windows下的默认编码是GBK编码&#xff0c;tomcat默认编码是UTF-8编码 解决思路&#xff1a;那就把tomacat的默认编码改为和windows下…

HTML5-框架-计算机应用2115-2022年11月17日13:57:13

目录 HTML栅格化布局框架 2、demo演示 栅格化理论&#xff1a; 栅格化系统&#xff1a; 网页栅格化&#xff1a; 重点掌握内容&#xff1a; 练习目标: HTML栅格化布局框架 1、将整个HTML浏览器的宽度设为单位1&#xff0c;那么为了操作栅格化方便&#xff0c;我们拆分…

最简单的java工具(JDK+IDEA)安装教程

一、安装包的准备 安装 java 开发者工具的话&#xff0c;分为 JDK IDEA 的安装&#xff0c;网上有很多版本是需要手动配置环境变量的&#xff0c;对大多数新手朋友来说&#xff0c;并不是很友好,下面我分享一种最快捷的安装方法&#xff1a; JDK 官网下载地址&#xff1a;htt…

服务器——SSL/TLS协议信息泄露漏洞(CVE-2016-2183)修复办法

前言&#xff1a;近期某台Windows Server服务器的远程连接端口(3389)被扫出了SSL/TLS协议信息泄露漏洞(CVE-2016-2183),尝试了网上很多复制来复制去的"解决方法",直接导致堡垒机连不上服务器,每次连不上服务器又得去找服务器提供方,真的非常麻烦,在此不得不吐槽一下某…

anaconda+pytorch安装+pycharm环境配置

首先安装anaconda 网址&#xff1a;Anaconda Installers and Packages 我根据需要选择最新的windows-x86版&#xff0c;其他根据需要选择windows和linux,mac系统版本 安装正常安装&#xff0c;安装路径要记住&#xff0c;没有没配置环境变量要用到&#xff0c;安装后运行如果…

字节三面“凉凉”了,面试题与细节回顾,Java程序员的我太难了

面试字节&#xff0c;目前还记得一些细节&#xff0c;暂时先写一篇面经回顾一下吧~文末会有面试资料分享 字节跳动一面 HashTable、Hashmap. Hashtree的区别线程池相关,线程池的流程&#xff0c;参数线程池alivetime存活时间怎么控制cas讲一下redis讲-下,项目里怎么用redis的分…