【经验总结】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…

十二届蓝桥杯Python组3月中/高级试题 第二题

** 十二届蓝桥杯Python组3月中/高级试题 第二题 ** 第二题(难度系数 3,20 个计分点) 编程实现: 给定一个正整数,判断这个正整数是否能被5整除。 输入描述:输入一个正整数n 输出描述:如果n可以…

SpringBoot启动流程源码解析

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

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

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

基于AC-YOLO的路面落叶检测方法

基于AC-YOLO的路面落叶检测方法 A Road Leaf Detection Method based on AC-YOLO 完整下载链接:基于AC-YOLO的路面落叶检测方法 文章目录 基于AC-YOLO的路面落叶检测方法摘要第一章 引言1.1 研究背景1.2 研究意义1.3 相关工作 第二章 AC-YOLO算法介绍2.1 目标检测技术综述2.2…

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

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

远动通讯屏的作用

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

Spring MVC、Boot、Cloud:一站式对比与解析

Spring MVC、Boot、Cloud:一站式对比与解析 文章目录 Spring MVC、Boot、Cloud:一站式对比与解析一、SpringMVC二、SpringBoot三、SpringCloud四、从多个方面看1、定位和功能:2、依赖管理:3、开发效率:4、项目结构和维…

git--.gitignore--使用/详解/实例

简介 本文介绍git的.gitignore忽略文件的用法。 项目中并不是所有文件都需要保存到版本库中的,例如“target”目录及目录下的文件就可以忽略。 忽略某个文件(不提交到版本库的方法):在Git工作区的根目录下创建一个.gitignore文件…

上海市计算机学会竞赛平台2022年4月月赛丙组闰年的判定

题目描述 给定一个正整数 𝑦y 表示一个年份,请判定 𝑦y 年是否为闰年,闰年分普通闰年与世纪闰年: 普通闰年的年份是 44 的倍数,但不能是 100100 的倍数;世纪闰年的年份是 400400 的倍数。 输…

用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…

Pytorch实现扩散模型【DDPM代码解读篇2】

扩散的代码实现 本文承接 Pytorch实现扩散模型【DDPM代码解读篇1】http://t.csdnimg.cn/aDK0A 主要介绍“扩散是如何实现的”。代码逻辑清晰,可快速上手学习。 # 扩散的代码实现 # 扩散过程是训练部分的模型。它打开了一个采样接口,允许我们使用已经…

【线性回归】

1. 简单线性回归 y ax b double[] x {540, 360, 240}; double[] y {205, 325, 445};问题 根据double[] x 和 double[] y ,计算y ax b中a和b的值 解决方法 最小二乘法:让距离(实验值和理论值的差值)的平方和最小 即&…

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

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

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

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

stm32F103C8T6裸机如何提高响应速度

思路就是:将主函数的程序分为几块,不使用死延时函数,利用定时器中断,每1MS中断一次,然后中断1000次之后,过去了一秒钟,将1S标志位置1,然后主函数接收到之后,运行1S任务 …

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

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

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

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

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

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

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

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