当前位置: 首页 > news >正文

Vuex的同步存值与取值及异步请求

前言 

1.概念

Vuex是一个用于管理Vue.js应用程序中状态的状态管理模式和库。Vue.js是一个流行的JavaScript框架,用于构建用户界面,而Vuex则专门用于管理应用程序的状态,以确保状态在整个应用程序中保持一致和可维护。

2.Vuex的特点:

  1. 状态(State): 在Vuex中,状态是一个存储数据的对象,代表了应用程序中的某些信息或数据。这个状态是响应式的,意味着当状态发生变化时,相关组件会自动更新以反映这些变化。

  2. 存储(Store): Vuex引入了存储的概念,它是一个包含应用程序状态的单一对象。这个对象包含了你的应用程序中的所有全局状态,可以在整个应用程序中共享和访问。

  3. Getter: Getter是一种用于从状态中派生数据的计算属性。它们可以用于在组件中获取状态的部分数据,然后对其进行进一步处理。

  4. Mutation: Mutation是一种用于修改状态的方法,但是它们必须是同步的。这意味着它们用于执行状态的变更,但不能包含异步操作。Mutation用于记录状态变更,以便可以追踪和调试应用程序的状态变化。

  5. Action: Action类似于Mutation,但它可以包含异步操作。Actions用于提交Mutation,以便在异步操作完成后修改状态。这使得处理异步操作(例如HTTP请求)更加灵活和可维护。

  6. 模块化(Modules): Vuex允许你将应用程序的状态分割成模块。每个模块都有自己的状态、mutations、actions和getters,这有助于将大型应用程序的状态管理分解成更小的可管理部分。

使用Vuex的主要目标是确保应用程序中的状态管理变得可预测、可维护和易于理解。通过将状态集中存储在一个单一的Store中,你可以更轻松地追踪状态的变化、调试问题,并确保多个组件之间的状态同步。

要使用Vuex,你需要在Vue.js应用程序中安装和配置它,然后在组件中通过Getter、Mutation和Action来访问和修改状态。这有助于构建更具组织性和可维护性的Vue.js应用程序。

3.图解

 一.Vuex的取值与改变值

1.Vuex的使用

1.1安装

最新版本node.js: npm install vuex -S

指定版本安装 :npm i -S vuex@3.6.2

1.2 模拟Vuex管理编写基本页面

HTML

 <el-submenu  index="idx_258" key="key_258"><template slot="title"><span>vuex管理</span></template><el-menu-item index="/vuex/page1" key="key_258001"><span>页面1</span></el-menu-item><el-menu-item index="/vuex/page2" key="key_258002"><span>页面2</span></el-menu-item></el-submenu>

JS 

<template><div><h1>第二个页面</h1>{{msg}}</div>
</template><script>export default{data(){return {msg:'默认值'}}}
</script>
<template><div><h1>第一个页面</h1>{{msg}}</div>
</template><script>export default{data(){return {msg:'默认值'}}}
</script>

1.3 新建store仓库实例

分别在store仓库目录下创建actions.js、getters.js、mutations.js、state.js、index.js文件

(1)在store/state.js中定义状态数据

export default {TName:'YU'
}

(2)在store/mutations.js中设置修改状态的同步函数

export default{setTName:(state,payload){state.TName = payload.TName}
}

state指的就是state.js文件导出的对象,payload指的是vue文件中传递过来的参数

(3)通过store/getters.js进行存值

export default{getTname:(state){return state.TName;}
}

(4)store/index.js文件中新建vuexstore实例,并注册上面引入的各大模块

import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import getters from './getters'
import actions from './actions'
import mutations from './mutations'
Vue.use(Vuex)
const store = new Vuex.Store({state,getters,actions,mutations})export default store

并且在main.js中进行配置,并在实例中挂载store仓库

import store from './store'

 2.取值与改变值

通过方法模拟获取值与改变值

<div><h1>第一个页面</h1><p>改变state中的值</p>请输入改变后的值<input v-model="msg" type="text"/><button @click="fun1">获取state值</button><button @click="fun2">改变state值</button></div>
methods:{fun1(){let Tname = this.$store.state.TName;alert(Tname)},fun2(){this.$store.commit('setTName',{TName:this.msg})}}

 效果演示

3.跨页面取值

 在page2中export default中定义计算属性对象获取值

computed:{TName(){return this.$store.state.TName}}

效果演示

二.异步请求

1.定义异步方法

export default{setTNameAsync:(context,payload)=>{setTimeout(function(){context.commit('setTName',payload);},5000)}
}

context指的是vuex的上下文 

通过定时器的方式展示异步请求的方法,并在提交异步请求时调用同步请求的方法

2.定义函数调用异步方法

fun3(){this.$store.dispatch('setTNameAsync',{TName:this.msg})}

效果展示

三.异步发送Ajax请求

 1.定义发送Ajax后台请求方法

setTNameAjax:(context,payload)=>{this.axios.post(url,{params:params}).then(r=>{let _this = payload._this;let url = this.axios.urls.VUEX_AJAX;let param = {resturantName:payload.TName}}).catch(e=>{})}

2.定义后台方法

@RequestMapping("/queryVuex")public JsonResponseBody<?> queryVuex(HttpServletRequest request) {String resturantName = request.getParameter("resturantName");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String date = sdf.format(new Date());try {System.out.println("模拟异步情况,睡眠6秒,不能超过10秒,axios超时时间设置的是10秒!");Thread.sleep(6000);System.out.println("睡醒了,继续...");} catch (Exception e) {e.printStackTrace();}return new JsonResponseBody<>(resturantName + "-" + date,true,0,null);}

3.配置路由

'VUEX_AJAX':'vuex/queryVuex',//vuex的后台异步请求

4.前台函数调用

fun4(){this.$store.dispatch('setTNameAjax',{TName:this.msg,_this:this})}

注:这里需要将this进行传递到AJAX方法中进行调用

效果展示:

今天的分享到这里就结束了,感谢各位大大的观看,各位大大的三连是博主更新的动力,感谢谢谢谢谢谢谢谢谢各位的支持!!!!! 

 

相关文章:

Vuex的同步存值与取值及异步请求

前言 1.概念 Vuex是一个用于管理Vue.js应用程序中状态的状态管理模式和库。Vue.js是一个流行的JavaScript框架&#xff0c;用于构建用户界面&#xff0c;而Vuex则专门用于管理应用程序的状态&#xff0c;以确保状态在整个应用程序中保持一致和可维护。 2.Vuex的特点&#xf…...

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候&#xff0c;我们在谈论什么 js渲染网页&#xff0c;从某种程度来说&#xff0c;是指单纯的http请求&#xff0c;返回的文本数据&#xff0c;与我们在浏览器看到的内容&#xff0c;相距甚远.其可包括为以下几点&…...

智慧安防AI视频智能分析云平台EasyCVR加密机授权小tips

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…...

C# Windows 窗体控件中的边距和填充

可以将 Margin 属性、Left、Top、Right、Bottom 的每个方面设置为不同的值&#xff0c;也可以使用 All 属性将它们全部设置为相同的值。 在代码中设置Margin&#xff0c;元素的左边设置为5个单位、上边设置为10个单位、右边设置为15个单位和下边设置为20个单位。 TextBox myT…...

腾讯云2核4G轻量服务器5M带宽支持多少人同时在线?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;从CPU内存的角度&#xff0c;网站程序效…...

01 初识FPGA

01 初识FPGA 一.FPGA是什么 FPGA&#xff08;Filed Programmable Gate Array&#xff09;&#xff0c;现场可编程门阵列&#xff0c;一种以数字电路为主的集成芯片&#xff0c;属于可编程逻辑器件PLD的一种。 1.1 两大巨头 Xilinx(赛灵思)Altera&#xff08;阿尔特拉&#…...

设备巡检管理系统与隐患排查治理

如何才能将设备巡检做细做规范呢&#xff1f; 1.制定巡检制度和流程&#xff1a;通过建立明确的巡检制度和流程&#xff0c;并将其纳入企业的安全管理体系中。利用凡尔码平台制定一个详细的巡检计划&#xff0c;包括巡检的时间、地点、内容、检查方法和注意事项等&#xff0c;帮…...

linux之cpu模拟负载程序

工作中我们经常会遇到这样的问题&#xff0c;需要模拟cpu的负载程序&#xff0c;例如模拟cpu占有率抬升10%、20%、50%、70%等&#xff0c;那这样的程序应该如何实现呢&#xff1f;它的原理是什么样的呢&#xff1f; 思想 创建一个应用程序&#xff0c;该应用程序的作用可以根…...

zookeeper节点数据类型介绍及集群搭建

一、zookeeper介绍 zookeeper官网&#xff1a;Apache ZooKeeper zookeeper是一个分布式协调框架&#xff0c;保证的是CP&#xff0c;即一致性和分区容错性&#xff1b;zookeeper是一个分布式文件存储系统&#xff0c;文件节点可以存储数据&#xff0c;监听子文件节点等可以实…...

Spring: @ComponentScan注解,不设置basePackages时,为什么会扫描该注解所在的包?

ComponentScanAnnotationParser类的parse方法&#xff1a; 可以看到如果没配置basePackages&#xff0c;会调用ClassUtils的静态方法getPackageName将声明ComponentScan的类所在的包添加到basePackages中去...

DiffusionDet:第一个用于物体检测的扩散模型(DiffusionDet: Diffusion Model for Object Detection)

提出了一种新的框架——DiffusionDet&#xff0c;它将目标检测定义为一个从有噪声的盒子到目标盒子的去噪扩散过程。在训练阶段&#xff0c;目标盒从真实值盒扩散到随机分布&#xff0c;模型学会了逆转这个噪声过程。 在推理中&#xff0c;该模型以渐进的方式将一组随机生成的框…...

④. GPT错误:导入import pandas as pd库,存储输入路径图片信息存储错误

꧂ 问题最初꧁ 用 import pandas as pd 可是你没有打印各种信息input输入图片路径 print图片尺寸 大小 长宽高 有颜色占比>0.001的按照大小排序将打印信息存储excel表格文件名 表格路径 图片大小 尺寸 颜色类型 占比信息input输入的是文件就处理文件 是文件夹&#x1f4c…...

和鲸 ModelWhale 与华为 OceanStor 2910 计算型存储完成兼容性测试

数智化时代&#xff0c;数据总量的爆炸性增长伴随着人工智能、云计算等技术的发展&#xff0c;加速催化了公众对于数据存储与应用的多元化需求。同时&#xff0c;数据也是重要的基础资源和战略资源&#xff0c;需要严格保障其安全性、完整性。搭建国产数据基础设施底座&#xf…...

c++中单例模式的实现和问题

单例模式定义 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供了一个全局访问点来访问该实例。这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对…...

如何选购高效便捷的软件行业项目管理系统

如何选择一个高效便捷的软件行业项目管理系统&#xff1f;推荐一款好用的项目管理软件Zoho Projects&#xff0c;Zoho Projects是少数可以给客户开通权限的项目管理软件&#xff0c;相信Zoho Projects权限管理功能会受到题主的欢迎。有了这个功能&#xff0c;项目外的客户可以参…...

用“和美”丈量中国丨走进酒博物馆系列⑨

五粮液酒文化博览馆始建于1988年&#xff0c;是中国酒业最早的酒文化博览馆&#xff0c;于2020年启动升级改造。 现在我们看到的五粮液酒文化博览馆&#xff0c;采用了当今博览馆最前沿的展陈方式&#xff0c;展陈设计与空间布局更具灵动性和多元性&#xff0c;蕴含传统文化氛围…...

树莓派 Raspberry Pi 与YOLOv8 结合进行目标检测

文章大纲 使用树莓派摄像头 提供视频流前置文章libcamera树莓派安装与部署YOLOv8硬件需求 PrerequisitesYOLO Version: YOLOv5 or YOLOv8硬件的选择,树莓派5的YOLOv8支持呼之欲出,Hardware Specifics: At a GlanceYOLOv8 在树莓派上的配置与安装Install Necessary PackagesIn…...

centos 安装 percona-xtrabackup

一、yum安装 1.安装Percona yum存储库 yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm 2.启用Percona Server 8.0存储库 percona-release setup ps57 3.输出如下则安装成功 [rootlocalhost ~]# percona-release setup ps80 * Disabling all…...

机器学习1:k 近邻算法

k近邻算法&#xff08;k-Nearest Neighbors, k-NN&#xff09;是一种常用的分类和回归算法。它基于一个简单的假设&#xff1a;如果一个样本的k个最近邻居中大多数属于某一类别&#xff0c;那么该样本也很可能属于这个类别。 k近邻算法的步骤如下&#xff1a; 输入&#xff1a…...

知识图谱系列4:neo4j学习

这是一篇还不错的教程&#xff0c;我将会针对其中的Cypher语法在这篇帖子内提出问题&#xff0c;以便学习与复习。 MATCH是什么操作&#xff1f; 小括号()代表什么&#xff1f;&#xff08;n&#xff09;代表什么&#xff1f; MATCH (n) DETACH DELETE n是什么含义&#xff1…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...