vuex 入门
vuex.js
状态(数据)管理
在vue中当我们管理数据的时候比较乱,我们要用到下面的这个库,vuex.js
Vuex介绍
每一个Vuex应用的核心就是store(仓库),他是用来存储数据的
"store" 基本上就是一个容器,它包含着你的应用中大部分的状态(state)。Vuex 和单纯的全局对象有以下两点不同
1.Vuex 的状态存储是响应式的
2.你不能直接改变 store 中的状态
vuex有6个概念
- Store(最基本的概念)(创库)
- State (数据)
- Getters(可以说是计算属性)
- Mutations
- Actions
- Modules
让我们看看怎么来创建一个创库
store 用来储存数据(状态)
|
1
|
new Vuex.Store({}) |
数据我们放到state里面
|
1
|
state:{} |
让我们看看怎么来读取里面的数据
|
1
|
store.state.数据 |
接下来让我们看看怎么去修改数据
|
1
|
mutations: {} |
我们怎么调mutations的数据
用commit()方法来调用
接下来让我们做一个小效果来看一下vuex在vue中怎么应用
我们做一个购物车加减按钮的效果
运行效果

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<div id="app"></div><template id="tpl"> <div> <tip></tip> <but></but> </div></template><script> var store = new Vuex.Store({ state:{ count:0 }, mutations:{ jia (state,n) { state.count += n.a }, jian (state) { state.count-- } } }); var vm = new Vue({ el:"#app", template:"#tpl", components:{ tip:{ template:"<div>{{$store.state.count}}</div>" }, but:{ template:` <div> <input type="button" value="+" @click="$store.commit('jia',{a:10})"/> <input type="button" value="-" @click="$store.commit('jian')"/> </div> ` } }, store });</script> |
我们从store里面获取的数据最好放到计算属性中
当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用mapState辅助函数帮助我们生成计算属性
下面我们做一个小的效果(注意:注释的计算属性和下面使用mapState辅助函数2个结果是相同的)
当映射的计算属性的名称与 state 的子节点名称相同时,我们也可以给 mapState 传一个字符串数组。
运行效果

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
<script> //我们从store里面获取的数据最好放到计算属性中 var store = new Vuex.Store({ state:{ count:0, num1:1, num2:2 }, mutations:{ jia (state) { state.count++ }, jian (state) { state.count-- } } }); var vm = new Vue({ el:"#app", template:"#tpl", components:{ tip:{ //创建计算属性 // computed:{ // count(){ // return this.$store.state.count; // }, // num1(){ // return this.$store.state.num1; // }, // num2(){ // return this.$store.state.num2; // } // }, //使用mapState辅助函数 //computed:Vuex.mapState({ // count:state=>state.count, //num1:state=>state.num1, //num2:state=>state.num2 //}), //mapState 传一个字符串数组 computed:Vuex.mapState(['count' , 'num1' , 'num2']), template:"<div>{{count}}{{num1}}{{num2}}</div>" }, but:{ template:` <div> <input type="button" value="+" @click="$store.commit('jia')"/> <input type="button" value="-" @click="$store.commit('jian')"/> </div> ` } }, store });</script> |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
原文链接:https://segmentfault.com/a/1190000011157709
vuex 入门的更多相关文章
- vuex入门教程和思考 [转] 里面有几个实例
Vuex基础概念 vuex中涉及的概念主要有下面几点,下面做个简单的介绍和理解. Vuex 官方文档:https://vuex.vuejs.org/zh-cn/ 官网有介绍,也有个demo shopp ...
- Vuex入门实践(中)-多module中的state、mutations、actions和getters
一.前言 上一篇文章<Vuex入门实践(上)>,我们一共实践了vuex的这些内容: 1.在state中定义共享属性,在组件中可使用[$store.state.属性名]访问共享属性 2.在m ...
- Vuex 入门指南
1.Vuex是什么? 我们还是像以往一样先看一看官方文档对此的解读(Vuex 是什么? · GitBook) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的 ...
- vuex入门
安装&使用 npm install vuex --save 1 通过Vue.use()来使用: import Vue from 'vue' import Vuex from 'vuex' Vu ...
- Vuex入门(5)—— 为什么要用Action管理异步操作
Action 类似于 mutation,不同在于: 1.Action 提交的是 mutation,而不是直接变更状态. 2.Action 可以包含任意异步操作. 官方给的定义我没什么意见,事实上我通过 ...
- vuex入门教程和思考
Vuex是什么 首先对于vuex是什么,我先引用下官方的解释. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可 ...
- vuex入门文档
如果你在使用 vue.js , 那么我想你可能会对 vue 组件之间的通信感到崩溃 . 我在使用基于 vue.js 2.0 的UI框架 ElementUI 开发网站的时候 , 就遇到了这种问题 : 一 ...
- Vue2.0 探索之路——vuex入门教程和思考
Vuex是什么 首先对于vuex是什么,我先引用下官方的解释. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可 ...
- [转] Vuex入门(2)—— state,mapState,...mapState对象展开符详解
1.state state是什么? 定义:state(vuex) ≍ data (vue) vuex的state和vue的data有很多相似之处,都是用于存储一些数据,或者说状态值.这些值都将被挂载 ...
随机推荐
- Redis的README.md
This README is just a fast *quick start* document. You can find more detailed documentation at http: ...
- Linux 文件管理(C语言库函数二--程序日志)
文件删除和改名 int remove(const char *pathname); int rename(const char *oldpath,const char *newpath); remov ...
- 通过 append() 和 prepend() 方法添加若干新元素
在上面的例子中,我们只在被选元素的开头/结尾插入文本/HTML. 不过,append() 和 prepend() 方法能够通过参数接收无限数量的新元素.可以通过 jQuery 来生成文本/HTML(就 ...
- linq to sql 动态构建查询表达式树
通过Expression类进行动态构造lamda表达式. 实现了以下几种类型,好了代码说话: public Expression<Func<T, bool>> GetAndLa ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- 辛星教你高速掌握PHP的正則表達式
首先说一下,这篇文章也是我在看了数个大牛的博客之后总结出来的,因此首先向这些大牛表示崇高的敬意和感谢,因为人数众多.并且来源也是特别分散,就不一一介绍了,见谅. ************跨语言的主题* ...
- IDLE崩溃:IDLE's subprocess didn't make connection. Either IDLE can't start a...
今天在测试Python脚本的时候,突然间发现,脚本不能启动了,还弹出了“IDLE's subprocess didn't make connection. Either IDLE can't star ...
- MySQL中enum类型数据,要传入字符串
问题来源:公司业务,某张表中一个字段定义为: enum('0','1','2','3','4','5','6','7','8','9','10') NOT NULL DEFAULT '0' 某天跑脚本 ...
- UIAlertView及UIActionSheet 在ios8极其以下版本的兼容问题解决方案
本文转载至 http://www.aichengxu.com/view/35326 UIAlertView及UIActionSheet在ios8中被放弃,其功能将完全由UIAlertControlle ...
- n++ ++n
n = 100 + m++ n = 100 +m; ++m n = 100 + ++m; ++m; n = 100 +m ;