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

news2024/10/5 20:23:06

需求场景

  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.coloradmin.cn/o/1663976.html

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

相关文章

Linux下安装JDK并配置环境变量

一、Oracle官网下载jdk 1、官网地址 https://www.oracle.com/java/technologies/downloads/#java17 2、命令下载 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 3、解压 tar -zxvf jdk-17_linux-x64_bin.tar.gz 4、配置环境变量 ec…

HarmonyOS开发案例:【生活健康app之获取成就】(3)

获取成就 本节将介绍成就页面。 功能概述 成就页面展示用户可以获取的所有勋章,当用户满足一定的条件时,将点亮本页面对应的勋章,没有得到的成就勋章处于熄灭状态。共有六种勋章,当用户连续完成任务打卡3天、7天、30天、50天、…

IP地址127.0.0.1的误解:一次投标监管的技术失误

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

selenium进行xhs图片爬虫:03获取一篇图文的图片

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍&…

出海企业哪种组网方案更省事?

对于出海企业而言,建立跨地区的数据传输和协同工作至关重要,以提升运营效率。因此,网络构建变得迫在眉睫。通过构建企业组网,企业能够加强与海外分支、客户和合作伙伴之间的联系,加速海外业务的发展。 然而&#xff0c…

深兰科技荣获中国机器人行业年度独角兽企业奖

近日,“维科杯OFweek 2023人工智能产业大会暨行业年度评选颁奖典礼“在深圳隆重举行。经OFweek网络投票、专家组评审及组委会综合评审三轮激烈紧张的评审筛选,通过对近300个参评项目的综合实力考量,最终深兰科技成功荣膺“维科杯OFweek2023中…

计算机视觉——OpenCV实现Lucas-Kanade 光流追踪

1.光流 光流法是计算机视觉中用于估计图像序列中物体运动的关键技术。它类似于观察夜空中的彗星,通过其在天空中的运动轨迹来追踪它的路径。在图像处理中,光流帮助我们理解像素点如何在连续的帧之间移动。 1.1 稀疏光流法 稀疏光流法关注于图像中的关…

js实现复制功能

/*** 复制* param {*} val 要复制的内容* returns*/ export const copyToClipboard async val > {try {// 使用现代 API 尝试复制if (navigator.clipboard && navigator.permissions) {await navigator.clipboard.writeText(val)return // 如果成功,直接…

pikachu靶场-全套学习

文章目录 配置pikachu靶场浏览器访问过程burpsuite配置代理hackbar安装使用kali安装中国蚁剑暴力破解cookie简化场景解释各部分含义如何工作 基于表单的暴力破解验证码绕过(On server)验证码绕过(on client)token防爆破? XSS(Cross-Site Scripting跨站脚本攻击 &am…

Linux下安装mysql8.0(以tar.xz包安装--编译安装)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! Linux下安装mysql8.0(以tar.xz包安装--编译安装)https://myweb.myskillstree.cn/126.html 目录 一、下载对应自己glic版本的MySQL …

Linux x86_64 dump_stack()函数基于FP栈回溯

文章目录 前言一、dump_stack函数使用二、dump_stack函数源码解析2.1 show_stack2.2 show_stack_log_lvl2.3 show_trace_log_lvl2.4 dump_trace2.5 print_context_stack 参考资料 前言 Linux x86_64 centos7 Linux:3.10.0 一、dump_stack函数使用 dump_stack函数…

【Python基础】装饰器(3848字)

文章目录 [toc]闭包什么是装饰器装饰器示例不使用装饰器语法使用装饰器语法 装饰器传参带参数的装饰器类装饰器魔术方法\__call__()类装饰器示例带参数类装饰器property装饰器分页操作商品价格操作 个人主页:丷从心 系列专栏:Python基础 学习指南&…

Redis不同数据类型value存储

一、Strings redis中String的底层没有用c的char来实现,而是使用SDS数据结构( char buf[])。 缺点:浪费空间 优势: 1.c字符串不记录自身的长度,所以获取一个字符串长度的复杂度是O(N),但是SDS记录分配的长度alloc,已使用长度len,获取长度的…

资深测试必备技能!TestNG自动化测试框架实战详解

1、TestNG导言 在软件测试工作中,自动测试框架是不可或缺的,之前有Junit和Nunit框架,后有TestNG。TestNG不但吸取了Junit和Nunit框架的思想,而且创造了更强大的功能,它不但是单元测试框架,同时也是集成自动…

Qt Tab键切换焦点顺序:setTabOrder()

使用这个方法setTabOrder(),设置使得焦点的顺序从前到后依次是: ui->lineEdit》 ui->lineEdit_2》ui->lineEdit_3 》ui->lineEdit_4 焦点先在ui->lineEdit上,当按下Tab键时,焦点跑到ui->lineEdit_2上。。。按…

VS远程调试

因为是做工厂应用的客制化项目,在客户现场出现异常,本地又很难复现,而且重启软件可能又自动恢复了,此时可以用VisualStudio自带的远程调试功能进行调试,不需要重启软件,能较好的定位问题。客户电脑上不需要…

VBA信息获取与处理第四节:获取唯一非重复值返回数组的代码

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

k8s部署skywalking(helm)

官方文档 官方文档说明:Backend setup | Apache SkyWalking官方helm源码:apache/skywalking-helm官方下载(包括agent、apm):Downloads | Apache SkyWalking 部署 根据官方helm提示,选择你自己部署的方式&#xff0c…

企业网站从传统服务器迁移到弹性云有什么优势呢?

现代企业对于网站和应用程序的可用性和性能要求越来越高,传统基础设施可能无法满足这些需求。弹性云作为一种新兴的云计算服务模式,对于企业网站的运行和管理带来了许多优势。下面是企业网站从传统服务器迁移到弹性云的五大优势: 灵活弹性&a…

【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍 文章编号&#x…