vuex保存用户信息_Vuex状态管理

一个组件可以分为数据和视图,数据更新时,视图也会自动更新。在视图中又可以绑定一些事件,它们触发methods里面指定的方法,从而又可以改变数据、更新视图,这就是一个组件基本的运行模式。

但实际的业务中,经常有跨组件共享数据的需求,因此Vuex的设计就是用来统一管理组件状态的,它定义了一系列规范来使用和操作数据,使组件应用更加高效。

51865b1a9b3833e925828702760ce635.png

图中四个组件都用到了store数据,当store数据发生变化时,四个组件的视图均发生变化。

Vuex基本用法

首先我们先安装Vuex

npm install --save vuex

然后在main.js里面,通过Vue.use()使用Vuex

a7bcd72def51b10d29cabef4bec6109e.png

接下来new Vue({})的时候一定要注入刚刚创建的store,这样在各个组件里面就可以this.$store这样用了。

涉及到的属性配置有:

1)State

2)Mutations

3)Getter

4)Actions

下面我们一一介绍

State

我们模拟一下购物车的简单操作,获取购物车商品数量,向购物车添加商品

数据保存在Vuex选项的state字段,state里面保存我们的商品goods

接下来我们显示以下商品数量

f8a4dc1a0ffe8ca32c3938509820321f.png

state功能定位很简单,就是一些静态数据

开篇我们说了store里面的数据各个组件是共享的,当store里面的数据发生变化的时候,会影响各个组件,接下来我们验证一下,再创建一个shoppingcar.vue文件

ef5302a00cd6fff34327d9926ed1e169.png

我们在主页面填写如下代码:

99e271444b4d8e40b0bf8aebb1851984.png

我们验证的思路很简单,再创建一个组件,组件也需要获取商品数量,当在其中一个组件添加商品时,看看另一个组件的显示会不会也发生变化。同时发生变化就说明它们共享着同一数据。

官方文档说

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。

其实有一个前提,在创建Vuex时,需要开启严格模式,开启后就不能直接对this.$store.state的state进行修改,必须显式提交(commit) mutations。

官方文档进行了说明

开启严格模式,仅需在创建 store 的时候传入 strict: true;

在严格模式下,无论何时发生了状态变更且不是由 mutation 函数引起的,将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。

开启严格模式,仅需在创建 store 的时候传入 strict: true:

Mutations

mutations来监视我们的数据变化,相对应的提供改变数据的方法,方法里面的第一个参数就是store 的state属性,可见是死死管着state。

cf5086894afefbc5c0c0bab80677b537.png

在组件内,通过this.$store.commit方法来执行mutations。

d0f59035f438aeaadff9b7e84671b7ac.png

注意:this.$store.commit(‘pushgood’,’***’);第二个参数是传入的加入goods的值。

Commit方法的时候也可以这样写:

62f8dadd2a26914a4006f13ec5d4c8aa.png

在mutations里面做些修改:

23a42189076c4ac23c52092801e78497.png

Getters

现在我们有这样一个应用场景,组件A,组件B...需要获取按某种条件过滤后的数据,按照之前的思路,我们可能会在组件A,组件B...里面的computed里面写过滤数据的代码,在每个组件里面写显然是不行的,那么Vuex提供的getters是在数据源头做到过滤的,那么任何组件都可以直接用这个过滤数据了。

getters,首先它是一个属性顾名思义就是获取数据,功能定位就是获取数据

我们获取商品名字长度大于8的,以及它的数量

05a1bc3d005e62ebfbedaa52011b8700.png

注意:我们getters属性里面定义的getter也可以依赖其它的getter,将getters作为第二个参数。这里的filterGoodsCount依赖的是filterGoods。需要明确一下,这里的filterGoods和filterGoodsCount看作属性方法,所谓的属性方法是,当调用某个getter属性时会自动执行里面的方法。

在组件的计算属性里面获取信息,如下图

fe98affe0db7cbfbbcaacf58acc60000.png

注意:当调用this.$store.getters.filterGoodscount时会自动执行此属性里面的方法,这点类似编译性语言的属性字段。

Actions

这个方法跟mutations很像,mutations里不应该异步操作数据,如果异步操作数据,组件在Commit方法后数据不能立即改变,不知道什么时候才发生改变,与mutations不同的是actions里面提交的是mutations,最重要的一点是可以异步操作业务逻辑。

b1b2a01200e10df9f3d72b00f4a74b2a.png

actions在组件内通过$store.dispatch触发。

3b685b6b9453f926a73be7e2a74d3f51.png

这里的dispatch方法也可以传递对象类型的参数

9cc9769e1fc9ac9f069e560705bdb411.png

在执行commit时,如下图:第二个参数就是传过来的对象

ba83e70508dece25a321bac1b3aaed61.png

actions最重要的不是操作异步数据吗,我们来模拟一下:

82c090b2281d7af690af301e7d80ab17.png

当某个业务逻辑需要异步处理时就用actions,如上图,耗时1秒,成功了则执行后续代码reslove(‘执行后续代码’);

在组件内调用的时候如故:

8701c7f59c328ae19c7a56e9b223d19d.png

最后一个知识就是modules,它用来将store分割到不同模块。当你的项目足够大时,store里面的state、getters、mutations、actions代码会非常多,都放在一个文件里面显然是不行的,使用modules把它们写到不同的文件中,每个module拥有自己的state、getters、mutations、actions。如下:

4f48741cdf6f0b03ba86b59a4b0dbdda.png

具体的用法我会在下一篇博客里具体介绍。

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

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

相关文章

使用 docker 构建分布式调用链跟踪框架skywalking

一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致记录日志异常,所以最好的方式还是要做日志中心化,另一个问…

excel同一单元格怎么换行_excel表格内怎么换行 方法有两种 一看就会 新手教程...

很多人在用excel表格的时候都需要用到换行,但是有一些小伙伴还不知道如何去换行。今天就介绍两种单元格内换行的方法,这两种换行方式的效果不一样,大家可以根据自己的需求来选择使用哪种换行方式。方法一:单元格内自动换行操作&am…

持续交付一:从开发到上线的环境

团队开发中,开发,测试,预发布,生产,不同的角色工作在不同的环境中,不同的环境有不同的作用(有些公司的环境更多,按照自己的交付流程设计),当然不同的环境,配置也不能相同…

win10控制面板快捷键_你没玩过的全新版本 Win10这些操作你知多少

不知不觉,Win10与我们相伴已经整整四个年头了,从最开始的组团抗拒到现在的默默接受,个中滋味相信谁心里都有个数。近日微软开始推送“Win10更新五月版”,那么Win10中到底都有哪些“骚”操作?一起来看看吧。1、夜间模式…

C# 中的数字分隔符 _

编写 C# 代码时,我们时常会用到很大的数字,例如下面定义的变量:const long loops 50000000000;您能快速读出这是多少吗?是不是还是会有很多人把光标定位到最后一位,然后按键盘上的向左键一个一个往上数:个…

数字调制系统工作原理_空间光调制器工作原理是什么 空间光调制器工作原理...

空间光调制器(SLM), 空间光调制器(SLM)工作原理是什么?实时空间光调制器使得相干处理系统能输入非相干光图像和随时间变化的图像的器件。相干光处理系统的最大优点是二维平行处理、信息容量大,运算速度快。但是目前的输入图像和空间滤波都用银盐胶片作记录媒质&…

使用 .NET 5 体验大数据和机器学习

2020 中国.NET 开发者峰会正式启动 ,欢迎大家提交演讲主题或者购买超级早鸟票。翻译:精致码农-王亮原文:http://dwz.win/XnM.NET 5 旨在提供统一的运行时和框架,使其在各平台都有统一的运行时行为和开发体验。微软发布了与 .NET 协…

linux监控目录容量,利用ZABBIX监控某个目录大小

近期,因为JMS的消息堆积导致ApacheMQ频率故障(消息没有被消费掉,导致其数据库达到1.2G,JMS此时直接挂掉),很是郁闷!刚好自己在研究zabbix.既然zabbix如此强大,那么它可以监控我的这个目录大小吗&#xff1f…

三菱plc选型手册_模拟量是什么?PLC和模拟量是如何转换的?

模拟量在PLC系统中有着非常广泛的应用,特别是在过程控制系统中。模拟量是一种连续变化的量,因此,它的使用对象也是各种连续变化的量,比如温度,压力,湿度,流量,转速,电流&…

windows和linux命令行一样吗,微软改进Windows命令行 目的是和Linux命令行相抗衡

微软官方人员承认微软正在对Windows命令行环境或是Windows终端进行全方位的改进,目的是能和Linux命令行相竞争。随着Linux云服务器的大量被采用,很多Linux云服务器都没有安装图形界面,只使用终端能够大幅度提高运行速度,微软想通过…

vue 离开页面事件_【必看】58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度...

△ 是新朋友吗?记得先点web前端学习圈关注我哦~1.vue优点?答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十 kb ;简单易学:国人开发,中文文…

购票啦 | 2020中国.NET开发者峰会启动

.NET Conf China 2020去年2019年在上海举行了第一届的中国.NET开发者峰会,今年2020年即将在苏州举行第二届,有兴趣的童鞋们,不要忘记购票参加哈。 1大会背景介绍2014年微软组织并成立.NET基金会,微软在成为主要的开源参与者的道路…

w7下如何安装linux双系统,ubuntu安装教程(下): 教你装win7+Ubuntu双系统

今天突发的想装个双系统玩玩,原来我ubuntu和win8都是装在虚拟机里面的,感觉用起来很不方便,而且感觉用起来特别不流畅,所以就想装个win7ubuntu的双系统。原来是想把ubuntu直接wubi安装在win7里面。但是这样的话,会带来…

vscode代码运行时间工具_10款实用的VSCode插件提升你的编辑体验 | 第98期

代码编辑器或者文本编辑器相信大家都不会陌生,但是,常用Windows的朋友大概都知道其自带的“文本编辑器”那是一款多么难用的软件。后来又有一系列的编辑器,比如notepad、sublime、atom等等,包括Linux用户喜欢的vim,这些…

简单理解线程同步上下文

为了线程安全,winform和wpf框架中规定只能使用UI线程操作控件,从其它线程上操作控件就会报跨线程异常。假如有这样一个场景:点击按纽,然后开始计算员工薪资,并将计算信息实时展示在一个文本框中,由于计算过…

修改手机屏幕刷新率_手机屏幕没有高刷新率算不上旗舰机?看看网友都是如何回答的...

近日Redmi K30 Pro的各种参数信息逐渐曝光,高通骁龙865处理器、LPDDR5内存、UFS3.1闪存、VC液冷散热、前置弹出式摄像头、多彩呼吸灯、Z轴线性马达等等参数都备受好评。唯独在提及屏幕时,60Hz的刷新率就让网友们不满意了。此前在K30的发布会上&#xff0…

持续交付二:为什么需要多个环境

关于开发测试生产需要多少个环境,因公司而异,这里分享一下我建议开发过程中使用的几个环境。Development环境,就是开发环境,程序写代码,写单元测试的环境,一般和IDE一起,经常是在调试模式下进行…

git revert 后再次merge_git如何回滚错误合并的分支

导读:分类:技术干货题目:git如何回滚错误合并的分支合并到线上分支出现问题的修复方式。场景线上分支:master你开发的分支:dev1同时开发的分支:dev2dev1分支开发的代码已经上线,并且已经merge到…

linux+c+逐行读文件内容,使用C ++中的ifstream逐行读取文件

在C 中逐行读取文件可以通过某些不同的方式完成。[快]循环使用std :: getline()最简单的方法是使用std :: getline()调用打开std :: ifstream和循环。 代码简洁易懂。#include std::ifstream file(FILENAME);if (file.is_open()) {std::string line;while (getline(file, line)…

如何区分netty是udp还是tcp_鲜奶粉还是大包粉,到底该如何区分?

100%的宝爸宝妈们都希望为宝宝挑选最营养、最新鲜的口粮,也相信让娃爸每周逛遍各大超市,只为了选两罐最新日期的奶粉,这种事情一定不止一个人做过!一直以来,人们对于“新鲜”有着亘古不变的追求。尤其是对待生活中的“…