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

关于vuex的使用

1.首先安装vuex

npm install vuex --save

这时如果直接安装vuex,不指定版本的话,就会直接安装最新的vuex的版本。所以会出现报错。

报错就安装这个

npm install --save vuex@3

2.创建文件夹,

有的时候安装好会自动创建vuex的文件夹 ,也就是store文件夹

如果没有该文件夹,就自己创建一个,并且创建一个index.js文件

import Vue from "vue";
import Vuex from "vuex";// 需要使用插件一次
Vue.use(Vuex)//    引入小仓库
import goods from "./goods";
import search from "./search";
import user from './user'
// 对外暴露Store类的一个实例
export default new Vuex.Store({// 实现Vuex仓库模块式开发存储数据modules:{goods,search,user}})

这里为什么会有另外三个文件夹?而且为什么要引入这三个文件?

        因为为了结构清晰,我们把需要用到的数据都分别放,如商品数据就放在goods文件夹下面的

        index.js里面,搜索所需要的数据就放在search下的index.js里面,用户登陆后的信息就放在

        user下的index.js里面,然后再在主文件index.js里面引入这样小仓库,就可以在大仓库里面统

        一管理了

3.创建小仓库

那上面的小仓库里面的数据怎么写呢?

一般的模板为下

// state:仓库储存数据的地方
const state = {//state 中的默认初始值别瞎写,服务器返回什么,默认值就为什么
}
// mutations:修改state的唯一手段,只有mutations可以修改state的数据
const mutations = {
}
// actions:处理action,可以书写自己的业务逻辑,也可以处理异步
const actions = {// 这里可以书写业务逻辑,但是不能修改直接修改state,要提交mutations,让mutations提交
}
// getters:理解为计算属性,用于简化仓库数据,让组件获取仓库的数据更加方便
const getters = {}// 对外暴露Store类的一个实例
export default {state,mutations,actions,getters
}

我们这里以user下的index.js为例

这里只是写了一下如何在vuex中请求数据接口,当然也可以不写

看清步骤,是先在actions里面获取到异步数据,然后将数据传给mutations,然后mutations再将数据存在state里面

// 引入用户登录接口和获取用户信息接口
import { reqUserLogin, reqUserInfo} from "@/api"//引入路由,使vuex里面可以实现路由跳转
import router from '@/router/index'
//引入elementUi的提示框模块,为下面的登录成功显示消息提示框
import { Message } from 'element-ui';// 3.state:仓库储存数据的地方
const state = {//state 中的默认初始值别瞎写,服务器返回什么,默认值就为什么UserInfo:{}
}
// 2.mutations:修改state的唯一手段,只有mutations可以修改state的数据
const mutations = {// 函数USERINFO(state,UserInfo){// 将数据存入state中state.UserInfo = UserInfo},  
}
// 1.actions:处理action,可以书写自己的业务逻辑,也可以处理异步
const actions = {// 请求用户信息async UserInfo({commit}){let userInfo =  await reqUserInfo()// 将用户信息存入mutationscommit('USERINFO',userInfo.data)     },// 这里可以书写业务逻辑,但是不能修改直接修改state,要提交mutations,让mutations提交// dispatch是异步操作,commit是同步操作,因为下面需要用到异步操作,这里得把dispatch写进去,第二个参数data为调用接口所需要的参数async UserLogin({dispatch},data){// 请求接口数据await reqUserLogin(data).then( res =>{// 接口数据返回成功if(res.status == 0){// 成功提示Message.success(res.message);//   将登录成功的token放在session中window.sessionStorage.setItem('token',res.token);//   登录成功后,跳转到上一个页面(也就是你在哪点的登录,登录成功后,就跳回哪个页面)router.go(-1);//   我们需要在登录成功后,拿到用户id,然后调用请求用户信息的接口,该接口在上面的userInfo里面请求//   因为要使用这个调用接口函数,而且它是异步的,所以就需要用到dispatch,第一个参数为函数名,第二个参数为接口参数dispatch('UserInfo',res.userId);}else{// 数据请求失败提示Message.error(res.message);}});},}
// getters:理解为计算属性,用于简化仓库数据,让组件获取仓库的数据更加方便
const getters = {}// 对外暴露Store类的一个实例
export default {state,mutations,actions,getters
}

4.在main.js里面挂载vuex

 

5.在组件中使用actions异步操作函数

mutations同步函数只需要将dispatch改为commit即可

这里还是以上面的user下的index.js为例

我们可以在任一组件中使用该方法

$store为上面挂载在全局的vuex,dispatch为actions里的异步操作
如果是mutatios里面的同步操作就可以使用commit
第一个参数为异步函数的方法名,第二个参数为函数所需要的参数,也就函数里面接口调用需要的参数
this.$store.dispatch('UserLogin',{username,password})

6.在组件中使用state里面的数据

首先在需要使用的组件里面的script里面引入vuex,并用展开运算符展开它

import {mapState} from 'vuex'
export default {computed:{...mapState({userInfo:(state) => {  //因为把vuex展开了,并且我们使用了user小仓库,//这里先使用state然后接user就是使用user里面的state的UserInfo数据         let result = state.user.UserInforeturn result}})}
};

7.防止页面刷新后数据丢失

因为vuex是响应式的,刷新会清空数据,我们为了防止该情况,就把数据存在本地一份

在App.vue里面的created钩子函数里面操作

created() {if (sessionStorage.getItem('store')) {this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))));}window.addEventListener('beforeunload', () => {sessionStorage.setItem('store', JSON.stringify(this.$store.state));});},

相关文章:

关于vuex的使用

1.首先安装vuex npm install vuex --save 这时如果直接安装vuex,不指定版本的话,就会直接安装最新的vuex的版本。所以会出现报错。 报错就安装这个 npm install --save vuex3 2.创建文件夹, 有的时候安装好会自动创建vuex的文件夹 &#xf…...

第53篇-某商城sign参数分析-webpack【2023-03-07】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、网站分析三、完整代码一、前言 今天再来试一个webpack的例子吧,网址: aHR0cHM6Ly9tLnlxYi5jb20vYmFuay9…...

探秘MySQL——排查与调优

文章目录一、问题排查一:SQL执行出错二、问题排查二:慢查询0.几个重要参数1.配置慢查询日志命令行配置(重启失效)修改配置文件(永久生效)2.查看慢查询日志3.问题排查1:Look_time耗时4.问题排查2…...

【9.数据页结构】

概述 InnoDB 的数据是按「数据页」为单位来读写的,也就是说,当需要读一条记录的时候,并不是将这个记录本身从磁盘读出来,而是以页为单位,将其整体读入内存。数据库的 I/O 操作的最小单位是页,InnoDB 数据页…...

演唱会总是抢不到票?教你用Python制作一个自动抢票脚本

人生苦短 我用python 这个大家应该都知道吧? 是中国综合类现场娱乐票务营销平台, 业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 如何快速抢票? 那么, 今天带大家用Python来制作一个自动抢票的脚本小程序 本文源码python安…...

【系统开发】WebSocket + SpringBoot + Vue 搭建简易网页聊天室

文章目录一、数据库搭建二、后端搭建2.1 引入关键依赖2.2 WebSocket配置类2.3 配置跨域2.4 发送消息的控制类三、前端搭建3.1 自定义文件websocket.js3.2 main.js中全局引入websocket3.3 App.vue中声明websocket对象3.4 聊天室界面.vue3.5 最终效果一、数据库搭建 很简单的一个…...

Learning C++ No.14【STL No.4】

引言: 北京时间:2023/3/9/12:58,下午两点有课,现在先把引言给搞定,这样就能激励我更早的把这篇博客给写完了,万事开头难这句话还是很有道理的,刚好利用现在昏昏欲睡的时候,把这个没…...

高速PCB设计指南(八)

七、产品内部的电磁兼容性设计 1 印刷电路板设计中的电磁兼容性 1.1 印刷线路板中的公共阻抗耦合问题 数字地与模拟地分开,地线加宽。 1.2 印刷线路板的布局 ※对高速、中速和低速混用时,注意不同的布局区域。 ※对低模拟电路和数字逻辑要分离。…...

什么是腾讯云关系型数据库(MySQL/SQL Server/MariaDB/PostgreSQL详解)

什么是腾讯云关系型数据库?腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL详细介绍。腾讯云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库,提供安全可靠、伸缩灵活的按需云数据库服务。腾讯云关系型数据库提供 MySQL、SQL…...

进程通信相关概念

一、概念 1.1 通信方式有哪些 管道:水管,男纸条放入水管,女看了拿走不回复 消息队列:大盒子,男放入纸条,女看了不拿走,男女都可放 共享内存:直接桌子,男放桌上&#…...

05.Java的运算符

1.运算符计算机的最基本的用途之一就是执行数学运算&#xff0c;比如&#xff1a;int a 10;int b 20;a b;a < b;上述 和 < 等就是运算符&#xff0c;即&#xff1a;对操作数进行操作时的符号&#xff0c;不同运算符操作的含义不同。作为一门计算机语言&#xff0c;Ja…...

轮转数组(力扣189)

轮转数组 题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例1&#xff1a; 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7…...

主流的“对象转换工具”使用示例大全以及性能的对比

目录 前言 源码地址 代码示例 引入依赖 先定两个实体用于转换 定义一个接口让所有转换器都集成 Apache BeanUtils BeanCopier bean-mapping bean-mapping-asm Dozer 自己写get/set JMapper json2json MapStruct&#xff08;推荐&#xff09; ModelMapper OriK…...

分享10个不错的C语言开源项目

今天跟大家分享10个重量级的C语言开源项目&#xff0c;C语言确实经得住考验&#xff1a; Redis&#xff1a;Redis是一个开源的高性能的键值对数据库。它以C语言编写&#xff0c;具有极高的性能和可靠性。 Nginx&#xff1a;Nginx是一个高性能的HTTP和反向代理服务器&#xff0…...

【阅读笔记】JavaScript设计模式与开发实践2--闭包与单例、策略模式

目录闭包与高阶函数Function 扩展函数柯里化函数单例模式透明的单例模式惰性单例策略模式策略模式发展策略模式实现闭包与高阶函数 Array.prototype.sort 接受一个函数当作参数&#xff0c;用户可以自行在该函数内指定排序方式 // 由小到大排序 let res [1, 4, 2].sort((a, …...

设计模式(二十)----行为型模式之责任链模式

1、概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导能批准的天数不同…...

数据持久化层--冷热分离

业务场景 有一个系统的主要功能是这样的:它会对接客户的邮件服务器,自动收取发到几个特定客服邮箱的邮件,每收到一封客服邮件,就自动生成一个工单。之后系统就会根据一些规则将工单分派给不同的客服专员处理。 这家媒体集团客户两年多产生了近2000万的工单,工单的操作记…...

Ubuntu16.04系统 VSCode中python开发插件的安装

VSCode中python开发插件的安装 1. python python插件提供了代码分析&#xff0c;高亮&#xff0c;规范化等很多基本功能 2. Python for vscode 3. Python Preview 实时可视化你的代码结果。如果你Leedcode等题时&#xff0c;可以安装这个插件。能为VSCode切换各种主题皮肤…...

buuctf-pwn write-ups (12)

文章目录buu093-wustctf2020_easyfastbuu094-ciscn_2019_es_1buu095-wdb2018_guessbuu096-gyctf_2020_some_thing_excetingbuu097-axb_2019_heapbuu098-oneshot_tjctf_2016buu099-护网杯_2018_gettingstartbuu100-wustctf2020_number_gamebuu101-zctf2016_note2buu093-wustctf2…...

Linux- 系统随你玩之--网络上的黑客帝国

文章目录1、前言2、TCPDump介绍2.1、问题来了&#xff1a; 所有用户都可以采用该命令吗&#xff1f;2.2、抓包原理2.3、特点2.3.1、参数化支持2.2.2、 TCP功能3、 服务器安装Tcpdump3.1、安装3.2、检查安装是否正常。4、tcpdump 命令4.1、常用功能选项4.2、输出内容5、实操5.1、…...

Buck变换器的闭环控制在恒功率负载场景下是个挺有意思的挑战。最近用Simulink搭了个完整的仿真平台,这里把建模过程和控制策略掰开揉碎了聊聊

恒功率负载下Buck变换器的建模与控制simulink仿真文 件 亲手搭建 现代控制理论 附赠参考文献 另有一份word或PDF报告可加价先看电路拓扑结构&#xff0c;典型的Buck电路由开关管、续流二极管、LC滤波电路组成。在恒功率负载条件下&#xff0c;负阻抗特性会导致系统稳定性问题—…...

让知识传递更顺畅:在线教学课堂APP的功能设计

当学习不再局限于固定的教室和黑板&#xff0c;知识便有了更多抵达的方式。在线教学课堂APP正是这样一种载体&#xff0c;它将师生之间的互动延伸到线上&#xff0c;让学习随时随地在舒适的氛围中发生。以下从使用体验的角度&#xff0c;介绍其核心功能版块的设计思路。课程大厅…...

Open SWE 协作层:GitHub 深度集成与人在回路(HITL)设计

Open SWE 协作层&#xff1a;GitHub 深度集成与人在回路&#xff08;HITL&#xff09;设计Open SWE 不是一个孤立的系统&#xff0c;它的真正力量来自于与现有开发工作流的深度整合。从 GitHub Issue 触发任务到自动创建 Pull Request&#xff0c;从计划审批到执行干预——「人…...

扶梯安全开关硬件抽象库:轻量级嵌入式状态识别方案

1. 项目概述EscalatorSwitch 是一个面向自动扶梯安全控制场景的轻量级嵌入式硬件抽象库&#xff0c;其核心定位并非通用IO驱动&#xff0c;而是针对电梯/扶梯行业特有的“扶梯运行状态切换开关”&#xff08;Escalator Switch&#xff09;这一专用机电装置提供标准化、可复用的…...

Android密钥认证踩坑实录:GtsGoogleAttestationHostTestCases模块fail排查指南

Android密钥认证深度排错指南&#xff1a;从GtsGoogleAttestationHostTestCases失败到系统级修复 当你深夜盯着CI系统里那片刺眼的红色——GtsGoogleAttestationHostTestCases模块测试失败时&#xff0c;作为Android系统工程师的你是否感到一阵窒息&#xff1f;这不仅仅是又一个…...

从零理解IEEE 1500:芯片测试工程师必备的核心测试语言(CTL)指南

从零理解IEEE 1500&#xff1a;芯片测试工程师必备的核心测试语言(CTL)指南 在当今高度集成的芯片设计领域&#xff0c;测试工程师面临着前所未有的挑战。随着SoC设计复杂度呈指数级增长&#xff0c;传统的测试方法已无法满足现代芯片验证的需求。IEEE 1500标准应运而生&#x…...

Oh-My-Posh:解决终端多行命令显示问题的终极方案

Oh-My-Posh&#xff1a;解决终端多行命令显示问题的终极方案 【免费下载链接】oh-my-posh JanDeDobbeleer/oh-my-posh: Oh My Posh 是一个跨平台的终端定制工具&#xff0c;用于增强 PowerShell、Zsh 和 Fish Shell 等终端的视觉效果&#xff0c;提供丰富的主题和样式来显示命令…...

别再乱存Token了!Laravel+jwt-auth安全实践指南(LocalStorage vs Cookie对比)

Laraveljwt-auth安全实践&#xff1a;Token存储方案深度解析与防御策略 在当今前后端分离的Web开发架构中&#xff0c;如何安全地存储和传输身份验证Token一直是开发者面临的棘手问题。许多团队在快速迭代过程中往往忽视了Token存储环节的安全设计&#xff0c;导致系统暴露在XS…...

三相PWM储能变流器PCS设计与仿真:双向DCDC与三相PWM变流器的协调控制策略研究

三相PWM储能变流器PCS仿真设计 【双向DCDC三相PWM变流器】 [1]储能Buck-Boost采用电流PID控制实现双向DC/DC功能&#xff0c;对电池进行恒功率充电或恒功率放电&#xff1b;实现能量由电网与直流母线的双向流动。 [2]三相PWM变流器采用电压外环、电流内环双闭环PI控制&#xff…...

Nacos 服务注册为什么默认是临时实例?

做 Spring Cloud 开发的同学&#xff0c;对 Nacos 肯定不陌生。大家平常写代码&#xff0c;配置文件里只要配好 Nacos 地址&#xff0c;程序一启动&#xff0c;服务就自动注册上去了。但不知道大家有没有留意过一个细节&#xff1a;当你把服务停掉&#xff0c;或者直接 Kill 进…...