【经验总结】Vue2中的全局变量(store

需求场景

  1. 需要在vue中存储一个可变的,可读写的全局变量
  2. 在不同的js、页面中均可调用和读写

技术:使用vue的store

用法总结

一、定义变量

1、找到vue的/src/store路径,在modules文件夹下创建文件(这里便于测试创建demo.js);

image-20240508113613863

2、编写代码

需要包含state/mutations/actions代码块,分别作用是

  • state:定义常量
  • mutaions:在Vuex中,mutations是用于改变store(应用的全局状态)的唯一方法。
  • actions:触发mutations的异步操作,从而更新 Vuex 的状态。

demo如下:注释来自于tongyi

/*** 定义一个包含初始状态的对象。* @state {Object} 包含姓名、年龄和头像的初始状态。*/
const state = {name: "",age: "",avatar: "",
};/*** 定义一个包含状态变更函数的对象。* @mutations {Object} 包含用于修改状态的函数。* 每个函数接收两个参数:当前状态对象和需要变更的值。*/
const mutations = {/*** 设置姓名。* @param {Object} state 当前状态对象。* @param {String} name 需要设置的姓名。*/SET_NAME: (state, name) => {state.name = name;},/*** 设置年龄。* @param {Object} state 当前状态对象。* @param {Number} age 需要设置的年龄。*/SET_AGE: (state, age) => {state.age = age;},/*** 设置头像。* @param {Object} state 当前状态对象。* @param {String} avatar 需要设置的头像URL。*/SET_AVATAR: (state, avatar) => {state.avatar = avatar;},
};/*** 定义一个包含异步操作的对象。* @actions {Object} 包含用于触发状态变更的异步函数。* 每个函数接收两个参数:上下文对象和需要传递给 mutation 的数据。*/
const actions = {/*** 用于设置姓名的异步操作。* @param {Object} context 包含状态对象和其它方法的对象。* @param {String} name 需要设置的姓名。*/setName({ commit }, name) {commit("SET_NAME", name);},/*** 用于设置年龄的异步操作。* @param {Object} context 包含状态对象和其它方法的对象。* @param {Number} age 需要设置的年龄。*/setAge({ commit }, age) {commit("SET_AGE", age);},/*** 用于设置头像的异步操作。* @param {Object} context 包含状态对象和其它方法的对象。* @param {String} avatar 需要设置的头像URL。*/setAvatar({ commit }, avatar) {commit("SET_AVATAR", avatar);},
};export default {namespaced: true,state,mutations,actions,
}

二、修改变量

1、引入store

import store from "@/store";

2、调用dispatch方法就可以写入数值

// 存入全局变量
store.dispatch("demo/setName", '张三');
store.dispatch("demo/setAge", 18);
store.dispatch("demo/setAvatar", 'ss.jpg');

三、读取数值

1、在getters.js中定义取值方法如下

const getters = {demoName: (state) => state.demo.name,demo: (state) => state.demo,
};
export default getters;

2、在需要调用的地方引入store并使用getters对象进行引用如下

import store from "@/store";//....
// 读取全局变量
console.log('store.getters.demoName -->',store.getters.demoName);
console.log('store.getters.demo -->',store.getters.demo);

打印效果如下:

image-20240508142401103

总结

在开发过程中使用store,可以在vue内部存储很多全局变量,例如常见的系统配置信息,登陆的用户信息等等;而且不仅能存储变量,还支持存储方法和一些复杂的逻辑。

反过来,在阅读代码时,也可以通过在查看指定位置store的代码去获取一些全局信息,更有利于理解整体的代码逻辑。

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

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

相关文章

51单片机入门:DS1302时钟

51单片机内部含有晶振,可以实现定时/计数功能。但是其缺点有:精度往往不高、不能掉电使用等。 我们可以通过DS1302时钟芯片来解决以上的缺点。 DS1302时钟芯片 功能:DS1302是一种低功耗实时时钟芯片,内部有自动的计时功能&#x…

SpringBoot启动流程源码解析

目录 一、SpringApplication构造方法解析 1. web应用类型 2. BootstrapRegistryInitializer 3. ApplicationContextInitializer 4. ApplicationListener 5. 推断Main方法所在类 二、SpringApplication.run(String... args)方法解析 1.创建DefaultBootstrapContext 2.获…

订单超时自动取消的实践方案

1、定时任务方案 方案流程: 每隔 30 秒查询数据库,取出最近的 N 条未支付的订单。 遍历查询出来的订单列表,判断当前时间减去订单的创建时间是否超过了支付超时时间,如果超时则对该订单执行取消操作。 定时任务方案工程实现相…

【Vue】vue中将 html 或者 md 导出为 word 文档

原博主 xh-htmlword文档 感谢这位大佬的封装优化和分享,亲测有用!可以去看大佬👇的说明! 前端HTML转word文档,绝对有效!!! 安装 npm install xh-htmlword导入 import handleEx…

远动通讯屏的作用

远动通讯屏的作用 远动通讯屏有时有称为调度数据网柜,远动通讯屏具体干啥作用?远动通讯屏是以计算机为基础的生产过程与调度自动化系统,可以对现场的运行设备进行监视和控制、以实现数据采集、设备测量、参数调节以及各类信号报警等各项功能。…

用webui.sh安装报错No module named ‘importlib.metadata‘

安装sdweb报错,出现No module named importlib.metadata: glibc version is 2.35 Cannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage) Traceback (most recent call last):File…

堆的基本操作(c语言实现)

1.堆的基本操作 1.1定义堆 typedef int HPDataType;//堆中存储数据的类型typedef struct Heap {HPDataType* a;//用于存储数据的数组int size;//记录堆中已有元素个数int capacity;//记录堆的容量 }HP;1.2初始化堆 然后我们需要一个初始化函数,对刚创建的堆进行初…

【C语言】路漫漫其修远兮,深入[指针]正当下

一. 指针初步 1.概念定义 地址:我们在内存中开辟空间时,为了方便后续访问,每个数据有确切的地址。 指针:指向数据的地址,并将其地址储存在指针变量中。 2.基本运算符 • 取地址操作符(&) …

【强化学习入门】基于DDPG的强化学习控制器设计

最近在看控制领域研究热门–强化学习相关的东西,跟着matlab官方强化学习教程一边看一边学,感觉入门门槛略高,需要补很多机器学习相关的知识,高数概率论那些,摸索了个把月感觉现在只大概会用,原理啥的还没搞…

进口家装水管十大品牌哪家好,弗锐德为您推荐进口家装水管领先十大品牌

水管作为家装隐蔽工程之一,选对一款优质的水管是至关重要的,毕竟好的水管能够保证家庭后续几十年的用水安全和健康。今天,小编就和大家说说进口家装水管十大品牌哪家好? 目前国内进口家装水管具有知名度和消费者认可的品牌有&…

自制一个3D打印的移动终端——T3rminal

T3rminal是我过去几个月一直在努力开发的一个CyberDeck,并希望将其开源。 我从不同设备如Decktility、YARH和其他项目中获得了灵感。 你可以在我的Github上协助并关注该项目:https://github.com/crazycaleb2008/T3rminal/tree/main/3D%20Models 材料 …

Edge的使用心得和深度探索-Sider: ChatGPT 侧边栏

作为一款备受欢迎的网络浏览器,Microsoft Edge在用户体验和功能方面都有着诸多优势。在长期的使用中,我总结出了三条使用心得,同时也发现了三个能够极大提高效率的功能。让我们一起深度探索Edge的潜力吧! 使用心得: 界…

Spring 常用的注入方式有什么?

Spring 是一个非常流行的 Java 开发框架,它提供了多种依赖注入(Dependency Injection)的方式,使得开发者可以轻松地管理应用程序中的组件依赖关系。在 Spring 中,常用的注入方式主要包括构造器注入、Setter 方法注入、…

【测试报告】星光日册

⭐ 作者:Jwenen 🌱 作者主页:Jwenen的个人主页 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 测试报告 1. 项目介绍2. 测试用例框架3. 自动化测试源码 1. 项目介绍 “星光日册”项目实现了用…

继续SQL

主知识点六:having 聚合前的筛选用where,聚合后的筛选用having Having和where的区别是:运行顺序和对象不用 Having是在group by聚合后的基础上进行筛选。 ● 【例题27*】(运行原理)查询总人口数至少为3亿的大洲和…

vxe-table 区域选取、复制粘贴功能,的基本使用

vxe-table区域选取、复制粘贴功能&#xff0c;的基本使用&#xff08;注&#xff1a;该功能仅支持企业版&#xff0c;这里仅供部分演示&#xff09; 1.鼠标区域选择功能&#xff1a; 参数说明&#xff1a; mouse-config.area 是否开启鼠标单元格区域选取 <template>&l…

详解基于 RAG 的 txt2sql 全过程

前文 本文使用通义千问大模型和 ChromaDB 向量数据库来实现一个完整的 text2sql 的项目&#xff0c;并基于实际的业务进行效果的展示。 准备 在进行项目之前需要准备下面主要的内容&#xff1a; python 环境通义千问 qwen-max 模型的 api-keyChromaDB 向量数据库acge_text_…

Linux-笔记 uboot修改设备树

1. FDT介绍 扁平设备树&#xff08;Flattened Device Tree&#xff0c;FDT&#xff09;&#xff0c;也叫平坦设备树&#xff0c;是设备树的一种二进制表示形式&#xff0c;提高了在嵌入式系统中的传输和解析效率&#xff1b; 2. 在U-Boot中使用FDT 2.1. 进入U-Boot 开发板上…

OpenCV 入门(四)—— 车牌号识别

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…

【论文阅读】VMamba: Visual State Space Model

VMamba:视觉状态空间模型 code&#xff1a;https://github.com/MzeroMiko/VMamba Background ​ CNN拥有线性复杂度因而可以处理高分辨率的图像&#xff0c;而ViT在拟合能力方面超过了CNN&#xff0c;但ViT是二次复杂度&#xff0c;在处理高分辨率图像时计算开销较大。ViT通过…