Vuex的理解以及它的辅助函数
理解:vue中的“单向数据流”,这里借用官网的图示:

Vue是单向数据流,v-model只是语法糖而已。单向数据流就是:数据总是【向下传递】从父级组件传递给子组件,只能单向绑定。子组件内部不能直接修改从父级传递过来的数据,当尝试在子组件内部修改父组件的数据,vue将报错。主要是为了组件解耦。(假如子组件可以修改父组件数据,那么一个子组件变化将会引发所有依赖这个数据的子组件发生变化,发生连锁反应,所以vue不推荐子组件修改父组件数据,直接修改props会抛出警告)。
但是如果子组件(props里面存的是父级组件流下来的数据)想要修改父组件的值怎么办呢?【主要是通过$emit定义事件】
定义一个局部变量,并用prop的值初始化它。
定义一个计算属性,处理prop的值并返回。
而vuex解决的问题是:多个组件依赖于一个共同的状态,变更一个组件的状态,其他组件响应式的更新。所以需要将这些组件的共享状态抽取出来,放在vue的最顶层,进行全局单例模式的管理。

vuex里面的state是变量状态管理,进行渲染组件,组件调用时候是通过dispatch actions,状态的改变需要进行commit mutations,主要是为了用vuejs devtools可以明确的追踪到状态的变化。
因为vuex是响应式的,所以在组件中调用store中的状态仅仅需要在计算属性computed【可以使用mapGetters进行状态的获取】中返回即可,触发变化在mothods中提交mutation【里面是改变state状态的一系列方法】就行。
Vuex除了Store对象,还对外提供了一系列的辅助函数,方便我们在代码中使用Vuex,提供了操作store的各种属性的一系列的语法糖,主要有mapState,mapGetters,mapActions,mapMutations,插件plugins选项。
参考链接:http://www.imooc.com/article/14741
1,state && mapState
state:vuex里的唯一数据源。当一个组件需要获取多个状态时候,将这些状态都声明为计算属性比较冗余,所以就用mapState。
2,getter && mapGetter
getter:store中派生状态,可以认为是store的计算属性。mapGetter将store中的getter映射到局部计算属性。
3,mutation && mapMutation
更改vuex中store中状态的唯一方法:提交mutation。每个mutation都有一个事件类型(type)和一个回调函数。这些事件类型一般是用常量代替。
为什么mutation里面必须是同步函数?
主要是在mutation中混合异步调用会导致程序很难调试。用devtools很难追踪状态的改变。所以就定义了一个actions专门进行异步的处理。
一般都是使用mapMutations辅助函数将组建中的methods映射为store.commit调用(需要在根节点注入store)。
4,action && mapActions
action类似于mutation,不同之处:
action提交的是mutation,而不是直接改变状态。
action可以包含任意异步操纵。
5,module
当应用变得比较复杂时候,store对象有可能变的相当臃肿。在此情况下,vuex允许将store分割成模块(module),每个模块有自己的state,mutation,action,getter甚至是嵌套子模块等。
Vuex的理解以及它的辅助函数的更多相关文章
- vuex 深入理解
参考自:https://mp.weixin.qq.com/s?src=11×tamp=1528275978&ver=922&signature=ZeHPZ2ZrLir ...
- 关于vuex的理解
刚开始学vue的时候,看到很多项目都有用vuex,抱着一种好奇的心态去看下vuex的官方文档,如下: Vuex官方文档 Vuex 是什么?Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 ...
- Vuex之理解Getters的用法
一.什么是getters在介绍state中我们了解到,在Store仓库里,state就是用来存放数据,若是对数据进行处理输出,比如数据要过滤,一般我们可以写到computed中.但是如果很多组件都使用 ...
- vuex深入理解 modules
一.什么是module? 背景:在Vue中State使用是单一状态树结构,应该的所有的状态都放在state里面,如果项目比较复杂,那state是一个很大的对象,store对象也将对变得非常大,难于管理 ...
- 简述对Vuex的理解
1.什么是Vuex: Vuex是一个专为Vue.js应用程序开发的状态管理模式. 2.使用Vuex的原因: 当我们遇到多个组件共享状 ...
- vue学习笔记(五):对于vuex的理解 + 简单实例
优点:通过定义和隔离状态管理中的各种概念并强制遵守一定的规则,我们的代码将会变得更结构化且易维护.使用vuex来引入外部状态管理,将业务逻辑切分到组件外,可以避免重复的从服务端抓取数据. 详情请参考官 ...
- 转一篇关于vuex简单理解的文章
学习vuex半天摸不着头脑无意间发现了这篇文章 对vuex做了一个简单的阐述比较有助于我的理解 现在分享出来希望能给一些朋友一点帮助 这个是原文地址 http://www.ituring.com.c ...
- vuex简单化理解和安装使用
1.简单化理解 首先你要明白 vuex 的目的 就是为了 集中化的管理项目中 组件所有的 数据状态 (state) 0. 第一步你要明白 , store 的重要性 , store 类似一个中央基站, ...
- vuex的理解
首先需要了解vuex的基本概念和使用方式,vue的官网也有很详细的说明或者浏览:https://zhuanlan.zhihu.com/p/24357762. vue是单页应用所以当页面刷新时vuex的 ...
随机推荐
- LIS 问题
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #inc ...
- springboot学习笔记:11.springboot+shiro+mysql+mybatis(通用mapper)+freemarker+ztree+layui实现通用的java后台管理系统(权限管理+用户管理+菜单管理)
一.前言 经过前10篇文章,我们已经可以快速搭建一个springboot的web项目: 今天,我们在上一节基础上继续集成shiro框架,实现一个可以通用的后台管理系统:包括用户管理,角色管理,菜单管理 ...
- MySQL中的GIS几何函数和空间分析函数
MySQL空间扩展不仅提供了空间数据的存储能力,而且还具备一些空间运算能力,这些功能通过MySQL内建的几何函数实现.最简单的几何函数昨天已经有所涉及,也就是转换WTK的GEOMFROMTEXT和AS ...
- android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码
Android精选源码 android模仿支付宝app"记账本"模块源码 android一个超轻量级剪贴板历史记录管理软件源码 android模仿QQ拖动红点消失动画效果源码 展示 ...
- mysql 存储过程与存储函数
第一节:存储过程和函数的引入 存储过程和函数是在数据库中定义一些SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL 语句.存储过程和函数可以避免开发人员重复的编写相同的SQL ...
- 学习和使用 Styled Layer Descriptor SLD样式文件
1. SLD 文件大致作用,可以浏览下示意图: 点要素的符号化:http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/points ...
- 吴裕雄--天生自然 R语言开发学习:回归(续三)
#------------------------------------------------------------# # R in Action (2nd ed): Chapter 8 # # ...
- POJ 3522 用不同的排序方式
这是一个蜜汁WA了的代码.. 说好的样例对了就是对了呢orz 反正我个人认为思路是没问题的不知道WA在哪了,丢个坑在这里以后填吧 //思路: //1节点连接的边都记录下来,依次克鲁斯卡尔枚举得出最 ...
- Eclipse快速入门:远程调试Java应用
Eclipse快速入门:远程调试Java应用 2012年03月27日00:00 it168网站原创 作者:皮丽华 编辑:皮丽华 我要评论(0) 标签: Eclipse , Java , Java框架, ...
- PyCharm 介绍、安装、入门使用
一.Pycharm介绍 前面几年的时间,我一直用的eclipse,后面开始听同事说用IntelliJ IDEA了,而且说是目前业界最好用的java开发工具,IDE(集成开发环境),没有之一.PyCha ...