对vuex的浅解
vuex是什么?
官网的解释是
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools,extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
而就我浅显的理解是
它类似一个html里面的全局变量,可运用于全局,而vue存储的东西,可以运用于vue所有的组件,方便与组件里面数据的接受与监听。
vuex 在项目中的使用【通过vue-cli 脚手架搭建的项目中】
安装
npm install vuex --save
在main.js中 引入
//main.js
import Vuex from 'vuex';
Vue.use(Vuex);
//创建一个store以便于在所有组件都能查询到vuex的数据
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
}
}
});
//简单测试
//store.commit('increment')
//console.log(store.state.count);
//在vue实例中引用
export default new Vue({
el: '#app',
store,
components: { App },
template: '<App/>'
});
vuex核心概念的使用
//main.js
const store = new Vuex.Store({
//数据存储的字段
state: {
count: 0
},
//更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。
mutations: {
increment (state,value) {
state.count+=value
}
},
//可以理解为一个动作,它提交的是 mutation,而不是直接变更状态。
actions: {
increment (context,value) {
context.commit('increment',value)
}
},
//将数据返回出去,以便于组件中拿到count值
getters:{
getCounts:state =>state.count
}
});
//新建一个组件,假设命名为testDemo.vue
<template>
<div>
{{counts}}
</div>
</template>
<script>
export default {
name: 'testDemo',
data () {
return {
}
},
computed:{
//通过计算属性监听vuex里面 count的值
counts(){
return this.$store.getters.getCounts;
}
},
created(){
setTimeout(()=>{
//action 方法提交
this.$store.dispatch('increment',10)
},2000)
}
}
</script>
随后,可以将store在main.js中处理出来,src目录下新建一个文件夹命名为store,新建index.js,actions.js,getters.js,mutation-types.js,mutations.js
//index.js
import Vue from 'vue';
import Vuex from 'vuex';
import mutations from './mutations';
import actions from './actions';
import getters from './getters';
Vue.use(Vuex);
export const store = new Vuex.Store({
state: {
count: 1,
},
mutations,
actions,
getters
});
// mutation-types.js
export const INCREMENT="INCREMENT";
19
// action.js
import {
INCREMENT
} from './mutation-types';
export default {
[INCREMENT]({ commit, state },value) {
commit(INCREMENT,value);
},
};
// mutations.js
import {
testDemo.vue
<template>
<div>
{{counts}}
</div>
</template>
<script>
export default {
name: 'testDemo',
data () {
return {
}
},
computed:{
//通过计算属性监听vuex里面 count的值
counts(){
return this.$store.getters['INCREMENT'];
}
},
created(){
setTimeout(()=>{
//action 方法提交
this.$store.dispatch('INCREMENT',10)
},2000)
}
}
</script>
这样以来,逼格就立马高了一些
最后,文件的目录大概就长下图这个样子
对vuex的浅解的更多相关文章
- 从最大似然到EM算法浅解
从最大似然到EM算法浅解 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习十大算法之中的一个:EM算法.能评得上十大之中的一个,让人听起来认为挺NB的. ...
- 面试-1-C#浅解
面试-1 C#浅解众所周知c#是微软推出的一款完全没面向对象的编程语言,那么对象是什么?在现实生活中人们一提到对象首先想到的就是“情侣”!但是在我们的程序中对象是什么? 在程序中个能够区别于其他事 ...
- GIS历史概述与WebGis应用开发技术浅解
声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...
- List根据某字段去重,以及compareTo 浅解
原文链接:https://blog.csdn.net/qq_35788725/article/details/82259013 Collections.sort可对集合进行排序 根据List里面某个字 ...
- Vuex state 状态浅解
对于Vuex中的state里面的理解总是有些欠缺,机制似乎理解了.但是还有很多的不足,在这就先浅谈下自己的理解. vuex 机制中,定义了全局Store,在各个vue组件面的this.$store指向 ...
- vuex基础详解
vuex入门 安装 vuex为我们提供了两种使用方法 直接引入 vuex下载地址:https://unpkg.com/vuex@2.0.0 下载之后用< script >标签包裹引入即可 ...
- JVM中GC浅解:垃圾回收的了解
1.为什么要有GC 没有GC的世界,我们需要手动进行内存管理,但是内存管理是纯技术活,又容易出错.但是我们写码的目的是为了解决业务问题,所以可以把这种纯技术活自动化,当然自动化也是有代价的. 2.垃圾 ...
- [js高手之路]Vue2.0基于vue-cli+webpack Vuex用法详解
在这之前,我已经分享过组件与组件的通信机制以及父子组件之间的通信机制,而我们的vuex就是为了解决组件通信问题的 vuex是什么东东呢? 组件通信的本质其实就是在组件之间传递数据或组件的状态(这里将数 ...
- Rest_framework Serializer 序列化 (含源码浅解序列化过程)
目录 Rest_framework Serializer 序列化 序列化与反序列化中不得不说的感情纠葛 三角恋之 save/update/create 四角恋之 序列化参数instance/data/ ...
随机推荐
- 如何直接打开android系统的wifi设置页面,防止intent劫持
在android的app开发中,经常会遇到需要跳转至系统设置页面的需求.但是当你使用以下代码时: 如 Intent intent = new Intent(Settings.ACTION_WIFI_ ...
- CSS里面position:relative与position:absolute 区别
position:absolute这个是绝对定位:是相对于浏览器的定位.比如:position:absolute:left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览 ...
- Opencv打开内置摄像头
Opencv中VideoCapture是专门用来处理视频文件或者摄像头视频流的类,详细的说明和用法可以参考Opencv2.4.13的说明文档:点击打开链接 使用VideoCapture打开内置摄像头的 ...
- 为什么要使用XHTML?
XHTML 是什么? XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language). XHTML 的目标是取代 HTML. XHTML 与 HTML ...
- php安全过滤类
/*ansic码-Url码表: http://www.w3school.com.cn/tags/html_ref_urlencode.html ---------------------------- ...
- 9.28NOIP模拟题
9.28NOIP模拟题 题目 哈 哈哈 哈哈哈 英文题目与子目录名 ha haha hahaha 单个测试点时间限制 1秒 1秒 1秒 内存限制 256M 128M 64M 测试点数目 10 10 1 ...
- Android Framework 学习
1. 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework面存一些资料待有空查看. 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony ...
- [转]linux下ulimit命令详解
转自:http://blog.chinaunix.net/uid-23842323-id-2656582.html 1,说明:ulimit用于shell启动进程所占用的资源.2,类别:shell内建命 ...
- C#学习-执行存储过程
使用存储的优点 1.执行更快.直接写sql脚本会有个解析编译的过程. 2.修改方便.当业务改变时,只需要改存储过程,不需要修改C#代码 3.传递Sql脚本数据相对更小 缺点: 1.使用存储过程,数据库 ...
- js基础---元素操作时字符串拼接
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...