【Vue】之Vuex的入门使用,取值,修改值,同异步请求处理---保姆级别教学

news2024/10/7 8:22:49

一,Vuex入门

1.1 什么是Vuex

        Vuex是一个专门为Vue.js应用程序开发的状态管理库。它用于管理应用程序中的共享状态,它采用集中式存储管理应用的所有组件的状态使得状态的管理变得简单和可预测

官方解释Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。可以想象为一个“前端数据库”(数据仓库), 让其在各个页面上实现数据的共享包括状态,并且可操作

1.2 Vuex的核心概念

  1. State(状态):使用单一状态树来存储应用程序的所有状态。该状态树是响应式的,当状态发生变化时,组件会自动更新。

  2. Getter(获取器):用于从状态中派生出新的状态。通过计算属性或方法,在获取器中可以对状态进行处理,从而得到新的值。

  3. Mutation(突变):用于修改状态的唯一方式。每个突变都是一个纯函数,接受当前的状态和一些可选的额外参数作为输入。在突变中,可以对状态进行同步修改。

  4. Action(动作):类似于突变,但是不直接修改状态。动作提交突变来改变状态。动作可以包含异步操作、以及对突变的多次提交。

  5. Module(模块):将应用程序的状态拆分成多个模块,每个模块拥有自己的状态、获取器、突变和动作。通过模块化的方式,可以更好地组织和管理状态。

1.3 Vuex优点

①集中化管理状态,方便状态的跟踪和调试

②组件之间共享状态,减少了组件间的通信复杂度

③提供了一套规范和约束,使得状态的变化可追踪和可预测

④支持插件扩展,可以通过插件增加额外的功能

二,Vuex的使用

2.1 vuex使用步骤

2.1.1 安装

node.js版本10输入下指令进行安装:

     npm install vuex -S  

node.js版本18请执行下指令 

       npm i -S vuex@3.6.2

注意:spa项目工作区间使用cmd终端命令窗口执行

2.2.2 创建store模块

 每一个Vuex应用的核心就是store(仓库),store基本上就是一个容器,它包含着你的应用中大部分的状态 (state)

store模块所需要的js文件:

 index.js

 state.js :共同维护的一个状态,state里面可以是很多个全局状态

  actions.js :数据的异步操作

  mutations.js :获取数据并渲染

   getters.js  :获取数据并渲染

结构:

2.2.3 在store/index.js中注入各模块

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

2.2.4 main.js中导入并使用store实例

import store from './store'

三、使用Vuex取值、修改值案例

3.1 创建两个组件

如下 pageone与pagetwo组件

3.2  配置路由

src/router/index.js

import pageone from '@/views/vuex/pageone'
import pagetwo from '@/views/vuex/pagetwo'

3.3 模拟菜单数据

  <!-- 模拟数据 -->
    <el-submenu key="key_999" index="index_999">
      <template slot="title">
        <span slot="title">Vuex管理</span>
      </template>
      <el-menu-item key="key_99901" index="/vuex/pageone">
        <span>pageone</span>
      </el-menu-item>
      <el-menu-item key="key_99902" index="/vuex/pagetwo">
        <span>pagetwo</span>
      </el-menu-item>
    </el-submenu>

3.4 vuex核心操作

①在state.js中定义全局参数

state.js:

export default{
	eduName:'我不是打工人'
}

②在mutations.js中改变值

mutations.js:

export default{
	setEduName:(state,payload)=>{
		state.eduName=payload.eduName
	}
}

③在getters.js中获取参数值

export default{
	getEduName:(state)=>{
	return state.eduName;
	}
}

3.5 效果

扩展:在别的页面上同样可以获取到state的值

pagetwo.vue组件编写:

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

三,Vuex异步请求处理

3.1 异步改变值

actions.js:异步改变state的值

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

在刚刚的Vue组件中新增一个按钮和点击事件

 fun3(){
      this.$store.dispatch('setEduNameAsync',{eduName:this.msg})
	  }

效果展示:

3.2 异步发送Ajax到后端

后端代码:

package com.zking.ssm.controller;

import com.zking.ssm.util.JsonResponseBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;

@RestController
@RequestMapping("/vuex")
public class VuexController {

    @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);
    }
}

在api文件夹下的action.js设置后台请求的地址的封装(URL)

'VUEX_AJAX': '/vuex/queryVuex', // 异常Ajax请求后端

actions.js:异步发送ajax到后端

 setEduNameAjAX:(context, payload) => {
	    let _this=payload._this;
	    let url = _this.axios.urls.VUEX_AJAX;
	    let params = {
	      resturantName: payload.eduName
	    }
	    _this.axios.post(url, params).then(r => {
	    console.log(r)
	 
	    }).catch(r => {
	 
	    });
	  }

在Vue组件中新增一个按钮和点击事件

  fun4(){
	    this.$store.dispatch('setEduNameAjAX',{eduName:this.msg, _this:this})
			  }

效果展示:

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

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

相关文章

Python数据分析实战-实现Kruskal-Wallis H检验(附源码和实现效果)

实现功能 当需要比较多个&#xff08;大于两个&#xff09;独立样本之间的差异时&#xff0c;可以使用非参数的Kruskal-Wallis H检验。Kruskal-Wallis H检验是一种非参数的方差分析方法&#xff0c;用于检验多个独立样本是否来自于相同的总体分布。 在Python中&#xff0c;你…

英国生物技术公司【AstronauTx】完成4800万英镑A轮融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于英国伦敦的生物技术公司【AstronauTx】今日宣布已完成4800万英镑A轮融资 。 本轮融资由诺华风险基金领投&#xff0c;布兰登资本&#xff08;Brandon Capital&#xff09;、MPM Capital、…

产品经理视角 | API接口知识小结

应用程序接口API&#xff08;Application Programming Interface&#xff09;&#xff0c;是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统&#xff08;中后台系统&#xff09;或后台不同系统之间的交互点。包括外部接口、内部接口&#xf…

下一代Docker来了,会让部署更加丝滑吗?

下一代Docker来了&#xff0c;会让部署更加丝滑吗&#xff1f; 目录 一、Docker是什么&#xff1f; 二、Docker 的几个名词概念 2.1、镜像&#xff08;Image&#xff09; 2.2、容器 (Container) 2.3、仓库 (Repository) 三、容器和虚拟机比较 四、Docker 运行环境 五、…

因子分析(SPSS和Python)

一、源数据 二、SPSS因子分析 2.1.导入数据 2.2.标准化处理 由于指标的量纲不同&#xff08;单位不一致&#xff09;&#xff0c;因此&#xff0c;需要对数据进行标准化处理 2.3.因子分析 点击“确定”后&#xff0c;再回到“总方差解释”表格&#xff0c;以“旋转载荷平方和…

Java 基于SpringBoot的某家乡美食系统

1 简介 《Java 基于SpringBoot的某家乡美食系统》该项目含有源码、文档等资料、配套开发软件、软件安装教程等。系统功能完整&#xff0c;适合作为毕业设计、课程设计、数据库大作业学习使用。 功能介绍 这个项目是基于 SpringBoot和 Vue 开发的地方美食系统&#xff0c;包括…

STM32F4X I2C LM75

STM32F4X I2C LM75 I2C协议讲解I2C接线I2C协议波形I2C起始信号I2C停止信号I2C应答信号I2C寻址I2C地址格式 I2C数据传输 LM75ALM75A介绍LM75A引脚说明LM75A地址LM75A寄存器LM75A I2C协议写配置寄存器读配置寄存器写Tos和Thyst寄存器读Tos Thyst Temp寄存器LM75A温度计算 LM75A例…

帆软报表之填报报表

1、配置数据源 URL填充格式&#xff1a;jdbc:mysql://127.0.0.1:3306/yq_iwater_ads 2、新建普通报表&#xff0c;配置数据库查询 3、编辑单元格 3.1、插入公式 ‘每月营业厅情况统计\n’ replace($month_id,‘-’,‘年’)‘月’ 3.2、插入数据列 3.3、关联数据列 3.4、隐藏不…

【java学习】面向对象特征之一:封装和隐藏(23)

文章目录 信息的封装和隐藏 信息的封装和隐藏 Java 中通过将数据声明为私有的 (private) 变量&#xff0c; 再提供 公共的&#xff08; public &#xff09;方法 &#xff1a;getXxx() 和 setXxx() 实现对该属性的操作&#xff0c;以实现下述目的&#xff1a; 隐藏一个类中不需…

LeetCode【100】单词拆分

题目&#xff1a; 代码&#xff1a; public boolean wordBreak(String s, List<String> wordDict) {Set<String> dictSet new HashSet<>(wordDict);boolean[] dp new boolean[s.length() 1]; // dp问题均是&#xff0c;先构造dp数组&#xff0c;大小为…

vue实现搜索文字高亮功能

在前端开发中&#xff0c;要实现文字搜索高亮效果&#xff0c;你可以使用JavaScript来搜索文本并通过CSS或其他方式对匹配的文本进行高亮处理。以下是一种常见的方法&#xff1a; 实现步骤&#xff1a; 1、 获取用户输入的搜索词。 2、创建一个正则表达式&#xff0c;以全局&am…

分享一下微信付费文章功能怎么做

微信付费文章功能是一种基于微信公众号的文章付费阅读模式&#xff0c;它可以帮助公众号运营者实现文章内容的变现&#xff0c;提高文章的阅读量和收益。本文将介绍微信付费文章功能的制作流程、功能特点、使用流程和推广策略&#xff0c;帮助读者了解如何制作一个高效的微信付…

嵌入式C语言自我修养《内存堆栈管理》学习笔记

目录 一、Linux环境下的内存管理 二、栈的管理 三、堆内存管理 四、mmap映射区 五、内存泄漏与防范 六、常见的内存错误及检测 C程序中定义的函数、全局变量、静态变量经过编译链接后&#xff0c;分别以section的形式存储在可执行文件的代码段、数据段和BSS段中。当程序运…

vue 本地上传Excel文件并读取内容

陌路遇见&#xff0c;陌路告别&#xff0c;陌路问好&#xff0c;九月再见&#xff0c;十月重现! 首先我来讲解一下我的思路&#xff1a; 首先&#xff0c;在模板部分&#xff0c;我们有以下元素&#xff1a; <input type“file” change“handleFileUpload” accept“.xlsx…

哈希应用之布隆过滤器

文章目录 1.介绍1.1百度搜索1.2知乎好文1.3自身理解 2.模拟实现2.1文档阅读2.2代码剖析 3.误判率的研究4.布隆过滤器的应用4.1如何找到两个分别有100亿个字符串的文件的交集[只有1G内存].分别给出精确算法和近似算法4.2如何扩展BloomFilter使得它支持删除元素的操作 5.整体代码…

第十章 字符串和日期

1.字符串 1.1.String 1.1.1.String特性 代表字符串。Java 程序中的所有字符串字面值&#xff08;如 "abc" &#xff09;都作为此类的实例实现&#xff1b;String是一个final类&#xff0c;代表不可变的字符序列,不可被继承&#xff1b;字符串是常量&#xff0c;用&…

高级网络调试技巧:使用Charles Proxy捕获和修改HTTP/HTTPS请求

今天我将与大家分享一种强大的网络调试技巧&#xff0c;那就是使用Charles Proxy来捕获和修改HTTP/HTTPS请求。如果您是一位开发人员或者网络调试爱好者&#xff0c;那么这个工具肯定对您有着很大的帮助。接下来&#xff0c;让我们一起来学习如何使用Charles Proxy进行高级网络…

1200*C1. k-LCM (easy version)(找规律)

Problem - 1497C1 - Codeforces 解析&#xff1a; 找规律即可&#xff0c;分为偶数的一半是偶数、偶数的一半是奇数、奇数三种情况 分别为 &#xff08;n/2&#xff0c;n/4&#xff0c;n/4&#xff09;&#xff08;n/2-1&#xff0c;n/2-1&#xff0c;2&#xff09;&#xff08…

canvas基础2 -- 形状

七巧板 七巧板本质上就是 分别由几个直线 拼成一个个图形&#xff0c;再将这些图形结合起来 var tangram [{ p: [{ x: 0, y: 0 }, { x: 800, y: 0 }, { x: 400, y: 400 }], color: "#caff67" },{ p: [{ x: 0, y: 0 }, { x: 400, y: 400 }, { x: 0, y: 800 }], col…

为什么3ds max渲染效果图有噪点?点进来,CG Magic告诉您!

大家在使用3ds max渲染效果图时&#xff0c;可能渲染结果往往会出现的都是不真实&#xff0c;有小伙伴会问如何使3dmax渲染效果图真实呢&#xff1f; 不真实就算了&#xff0c;渲染过程中&#xff0c;会出现3Dmax渲染噪点多这类问题。 什么原因3ds max渲染效果图有噪点呢&a…