首页 > 其他分享 >Vuex模块化

Vuex模块化

时间:2024-06-20 19:58:42浏览次数:12  
标签:testVuexModules const 模块化 getters modules state Vuex store

创建命名空间

mian.js

import Vue from "vue";
import store from "./store";

new Vue({
  el: "#BYUI_APP",
  router,
  store,
  render: (h) => h(App),
});

src/store/index.js

import Vue from "vue";
import Vuex from "vuex";
import getters from "./getters";

Vue.use(Vuex);
const modulesFiles = require.context("./modules", true, /\.js$/);
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1");
  const value = modulesFiles(modulePath);
  modules[moduleName] = value.default;
  return modules;
}, {});
const store = new Vuex.Store({ modules, getters });
export default store;

src/store/getters.js

const getters = {
	// testVuexModules: 对应命名空间的模块名
  phone: (state) => state.testVuexModules.phone,
  address: (state) => state.testVuexModules.address,
  // arrList(名字自取): "testVuexModules"模块的映射集,方便获取state的值
  arrList:(state) => {
    return state.testVuexModules
  },
};
export default getters;

src/store/modules 各自管理仓库

在这里插入图片描述

src/store/modules/testVuexModules.js 命名空间模块

 const state = {
  address: '',
  phone: '',
};

const mutations = {
  CHANGE_INFO: (state, info) => {
      state.address = info.address;
      state.phone = info.phone;
      // 如果想状态不想因为浏览器刷新而丢失,可以将状态缓存到本地
      // localStorage(数据永久缓存在本地浏览器中)   sessionStorage(临时缓存,有时效)
      //  两者使用方式一致,区别在时效
      localStorage.setItem("GET_PHONE", state.phone)
      // 移除缓存
      localStorage.removeItem('GET_PHONE')
  },
};

const actions = {
  changeInfo({ commit }, info) {
    commit("CHANGE_INFO", info);
  },
};
// 添加namespaced:true的方式使其成为带命名空间的模块
export default { namespaced: true, state, mutations, actions };

组件内提交与获取Vuex的值:

1.异步操作 this.$store.dispatch

//提交数据: testVuexModules:模块名, changeInfo: action方法名
this.$store.dispatch("testVuexModules/changeInfo", this.form)

//获取状态方式 1:对应getters.js的getters对象
this.$store.getters.address

//获取状态方式 2:当需要获取多个state状态,可以通过映射集,减少代码量,增加美观性
//辅助函数mapGetters批量使用状态, arrList: 对应getters.js的属性arrList
import { mapGetters, mapState } from "vuex"
// computed 
computed: {
    ...mapGetters(["arrList"]),
},
 
// 获取数据  
this.arrList.phone

2.同步操作 this.$store.commit

// 提交数据: testVuexModules(模块名), CHANGE_INFO(mutations方法名)
// 注意: 此提交方式需在 namespaced 开启 true 才会生效
this.$store.commit("testVuexModules/CHANGE_INFO", this.form)

// 获取状态方式 1
this.$store.state.testVuexModules.phone

// 获取状态方式 2
import { mapGetters, mapState } from "vuex"

// computed
computed: {
   ...mapGetters(["arrList"]),
    ...mapState({
      getMapState: (state) => state.testVuexModules,
    }),
},

// 获取数据
this.getMapState.phone

获取缓存的值

localStorage.getItem("GET_PHONE")

标签:testVuexModules,const,模块化,getters,modules,state,Vuex,store
From: https://blog.csdn.net/qq_39691676/article/details/139775840

相关文章

  • Vuex入门
    Vuex是什么?        Vuex是一个专为Vue.js应用程序开发的状态管理模式+库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。    可能有人不太理解这里的状态是什么,所谓“状态”,我们可以理解为数据,就是组......
  • 基于cJSON及心知天气模块化实现获取城市气象信息(现在、未来)
    V1.02024年6月14日发布于博客园目录序言功能描述运行结果示范注意!代码weather_api.hweather_api.cdemo.ccJSON.hcJSON.c参考链接序言功能描述用于请求心知天气的信息,现在的信息,未来n天的气象信息(免费版仅能3天).使用域名通过TCP连接到心知天气服务器,采用cJSON进......
  • 45道工程模块化高频题整理(附答案背诵版)
    1.简述前端自动化构建工具?前端自动化构建工具是指用于自动化完成前端开发中重复性任务的软件工具,如代码压缩、文件合并、预处理器编译(如Sass、Less)、代码检查、自动刷新浏览器、模块打包等。这些工具的目的是提高开发效率,保持代码质量,以及优化项目的最终输出。常见的前端......
  • (三十九)Vue之集中式的状态管理机制Vuex
    这里写目录标题概念vuex的核心概念State(状态)Getters(获取器)Mutations(突变)Actions(动作)搭建vuex环境基本使用getters的使用上一篇:(三十八)Vue之插槽Slots概念Vuex是一个专为Vue.js应用程序开发的状态管理模式。对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是......
  • 数栈xAI:轻量化、专业化、模块化,四大功能革新 SQL 开发体验
    在这个数据如潮的时代,SQL已远远超越了简单的查询语言范畴,它已成为数据分析和决策制定的基石,成为撬动企业智慧决策的关键杠杆。SQL的编写和执行效率直接关系到数据处理的速度和分析结果的深度,对企业洞察市场动态、优化业务流程、提升决策质量起着至关重要的作用。如何在浩瀚的数......
  • [vue2]深入理解vuex
    本节内容概述初始化仓库定义数据访问数据修改数据处理异步派生数据模块拆分案例-购物车概述vuex是一个vue的状态管理工具,状态就是数据场景某个状态在很多个组件使用(个人信息)多个组件共同维护一份数据(购物车)优势数据集中式管理数据响应式变化初始化仓库......
  • 个人关于vuex的见解
    前言vuex是什么?Vuex是Vue.js的官方状态管理库,专为Vue.js应用程序设计,用于在复杂的前端应用中集中管理状态。Vuex的重要性集中管理:统一存储应用状态,简化复杂应用的状态逻辑。响应式更新:状态变更自动反映到所有依赖组件,保持UI与状态同步。预测性:状态变更通过mutatio......
  • springboot模块化开发项目搭建-完善
    1.克隆项目,打开项目 2.改造成模块,entrance不是加粗,说明不是模块,需要改成模块 3.添加mysql驱动、mybatis、数据库连接池,定义版本,刷新maven 4.启动......
  • 【vuex小试牛刀】
    了解vuex核心概念请移步https://vuex.vuejs.org/zh/#一、初始vuex#1.1vuex是什么就是把需要共享的变量全部存储在一个对象里面,然后将这个对象放在顶层组件中供其他组件使用父子组件通信时,我们通常会采用props+emit这种方式。但当通信......
  • 51 单片机[5]:模块化编程及LCD1602调试工具
    一、模块化编程1.相关概念传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的......