Vuex是什么?

Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。

像一个仓库一样!


使用Vuex统一管理状态的好处?

1.能够在vuex中集中管理共享的数据,易于开发和后期维护
2.能够高效地实现组件之间的数据共享,提高开发效率
3.存储在vuex中的数据都是响应式的,能够实时保持数据与页面的同步

(一般情况下,只有组件之间共享的数据,才有必要存储到vuex中;对于组件中的私有数据,依旧存储在组件自身的data中即可。)


核心概念概述

vuex中的主要核心概念如下:

  1. State
  2. Mutation
  3. Action
  4. Getter

 State

State提供唯一的公共数据源,所有共享的数据都要统一放到Store的 State中进行存储。

组件访问State中数据

法一:通过 $store.state.全局数据名称 获取。

法二:按需导入

对比两种方式:

 


对于Vuex,不允许直接修改store内的数据。

这就要学到Mutation了

 Mutation

Mutation用于变更Store中的数据。

  • 只能通过 mutation变更Store数据,不可以直接操作Store中的数据。
  • 通过这种方式虽然操作起来稍微繁琐一些,但是可以集中监控所有数据的变化
  • 定义和触发:

(Mutations里面的方法的第一个参数永远是state,可以直接从里面更改数据)

触发mutations时也可以传递参数:

commit的作用就算调用某个mutation函数

触发mutations同样有第二种方式,就是按需索取,和按需索取store中变量方法非常类似,把需要用到的方法映射过来即可。

声明之后,直接 this.调过来的方法名字 即可,相当于将该函数定义为了组件中自己的函数。


在mutations中不可以执行异步操作,如setTimeout(()=>{},).

处理异步任务又要学到Action了

Action

Action用于处理异步任务。

如果通过异步操作变更数据,必须通过Action,而不能使用Mutation,但是在Action中还是要通过触发Mutation的方式间接变更数据。

(action里面的方法的第一个参数永远是context,可以直接从里面更改数据)

dispatch是触发action中的方法,commit是触发mutations中的。

注意:action只负责执行异步操作,如果像修改数据,还是得通过context.commit触发某个mutation才行.

同样,触发action时也可以传递参数:

触发action同样有第二种方式,就是按需索取,和前两者也是一样的,把需要用到的方法映射过来即可。用的是mapActions


那么,有时候我们并不想改变store里的数据,只想使用怎么办呢?

这个时候就要学Getter了

Getter

Getter 用于对 Store 中的数据进行加工处理形成新的数据。

  • Getter 可以对Store中已有的数据加工处理之后形成新的数据,类似Vue的计算属性。
  • Store中数据发生变化,Getter的数据也会跟着变化。

也是有两种方式,懒得讲了,前面几个懂了这个就自然一下就明白了


【Vue】Vuex-store相关推荐

  1. 【Vue】Vuex来改写MyClassroom.vue,点击【Vuex-保存】保存教室数据-20221226

    Vuex来改写MyClassroom.vue,点击[Vuex-保存]保存教室数据 坑1:template中调用方法不用带this <button @click="saveClassro ...

  2. 【vue】vuex中modules的基本用法

    1,什么时候用modules 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象.当应用变得非常复杂时,store 对象就有可能变得相当臃肿. 为了解决以上问题,Vuex 允许我们将 stor ...

  3. 【Vue】vuex mapState和mapGetters

    1.mapState方法:用于帮助映射state中的数据为计算属性 computed: {// 借助mapState生成计算属性:sum.school.subject(对象写法一)...mapStat ...

  4. 【vue】使用localStorage解决vuex在页面刷新后数据被清除的问题

    [vue]使用localStorage解决vuex在页面刷新后数据被清除的问题 参考文章: (1)[vue]使用localStorage解决vuex在页面刷新后数据被清除的问题 (2)https:// ...

  5. 【Vue】Vue 项目搭建

    文章目录 一.NodeJs 下载及配置 二.全局下载项目脚手架 三.创建项目 四.启动项目 一.NodeJs 下载及配置 本节内容参见本人博客:[Vue]Nodejs下载与安装 测试安装版本: 返回顶 ...

  6. stylus vue 报错_【Vue】Re01 理论概念和入门上手

    一.Vue概述 什么是渐进式?1.把Vue作应用的一部分嵌套项目中2.如果完全抛弃其他组件和框架,Vue又具有丰富的生态和库莱支持3.Core + Router + VueX 满足项目绝大多数的需求- ...

  7. 【vue】— provide/inject的原理

    系列文章目录 [VUE]- diff算法原理 [VUE]- watch侦听器原理 文章目录 系列文章目录 一.provide/inject的作用及使用方式 二.顺道复习一下组件间的通讯方式吧 三.源码 ...

  8. 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

    前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于"父子组件通信"的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰 ...

  9. 【Vue】样式穿透 ::v-deep的具体使用

    [Vue]样式穿透 ::v-deep的具体使用 之前在项目中用到了 vant,使用特别简单,而且组建也非常的丰富.即时这样,在项目中肯定也需要用额外的样式来打造自己的应用. 直接在 中编写的话只会影响 ...

  10. 【Vue】npm run serve 和 npm run dev 有什么区别

    [Vue]npm run serve 和 npm run dev 有什么区别 Q: 我的粉丝私信我,项目中运行的npm run serve 和 npm run dev 有什么区别?什么时候用npm r ...

最新文章

  1. 自回归解码加速64倍,谷歌提出图像合成新模型MaskGIT
  2. 揭秘高盛区块链报告:区块链技术在五大领域从理论走向实践 | 附报告下载
  3. BCH DEVCON 黑客马拉松即将登陆旧金山!
  4. BASH SHELL 脚本基础
  5. python for in list
  6. 蔻驰和mk哪个更大牌_mk和coach哪个好?mk和coach包包是一个档次吗?
  7. python中定义数据结构_Python中的数据结构—简介
  8. 数组的方法之(Array.prototype.reduce() 方法)
  9. (HDU)1157 -- Who's in the Middle(哪个居中)
  10. Opencv学习笔记_计算机视觉是什么?Opencv的起源
  11. leetcode 贪心_「leetcode」135.分发糖果【贪心算法】详细图解
  12. 决策树和CART决策树
  13. 天猫达尔文商品管理体系通俗简介
  14. 双向链表(double linked list)
  15. python --通过urlretrieve下载MP4文件
  16. Redis的Mster/Slaver
  17. 关于未名湖边的烦恼问题
  18. ecshop简化虚拟商品购买收货人信息【ECSHOP购物车不存在实体商品电话改为非必须以及隐藏掉】
  19. 男人选择什么样的人做老婆?
  20. 拥有着12万亿市场的部件,主角:射频

热门文章

  1. 《萨班斯法案》并不可怕 SAP主动顺应一举三得(zt)
  2. CAD打开时显示:应用程序无法正常启动(0xc0000142)
  3. 详细解析漏洞4个boom
  4. 关于TM影像各波段组合的简介
  5. Revit插件推荐[三]
  6. Vue项目中components组件的使用笔记
  7. try…catch…finally异常处理的组合方式
  8. ssm分布式开发学习日记02
  9. 一文读懂什么是 PWA?
  10. 红米2A高配刷机记录