Vuex总结
Vuex官网链接:https://vuex.vuejs.org/zh-cn/strict.html
Vuex
- 是一个专为 Vue.js 应用程序开发的状态管理模式。
- 它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
- Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
- 帮助我们管理新的共享状态
- 适合于开发大型单页应用
1.开始安装
在Vue-cli架构中 nmp i vuex --save
在src下新建目录vuex/store.js
2.store.js配置
import Vue from 'vue';//引入vue
import Vuex from 'vuex';//引入vuex
Vue.use(Vuex);//全局使用 var state={ //
count:1
};
var mutations={
add(state,n){
state.count+=n
},
reduce(state){
state.count--
}
}
export default new Vuex.Store({//暴露出口
state,mutations
})
3.五大方法
1.state
用于数据管理,可以通过computed直接返出,也可以组件调用,也可以借助mapState()管理
<template>
<div>
<h1>方法一:全局引入{{$store.state.count}}</h1>
<h1>方法二:computed引入{{count}}</h1>
<h1>方法三:mapState引入{{count1}}</h1>
</div> </template>
<script>
import store from"@/vuex/store";
import {mapState} from"vuex"
export default {
computed:{
count:function(){return this.$store.state.count},
...mapState(['count1'])
},
store
}
</script>
import Vue from 'vue';//引入vue
import Vuex from 'vuex';//引入vuex
Vue.use(Vuex);//全局使用 var state={ //
count:1,
count1:2
};
export default new Vuex.Store({//暴露出口
state
})
2. getter
主要用于数据的过滤,直接通过computed调用,也可以mapGetters()
<template>
<div>
<h1>mapGetters引入{{count_get}}</h1>
</div>
</template>
<script>
import store from"@/vuex/store";
import {mapState,mapGetters} from"vuex"
export default {
computed:{
...mapGetters(['count_get'])
},
store
}
</script>
import Vue from 'vue';//引入vue
import Vuex from 'vuex';//引入vuex
Vue.use(Vuex);//全局使用
var state={ //
count:1,
};
var getters={
count_get(state){
return state.count+1
}
};
export default new Vuex.Store({//暴露出口
state,getters
})
3.mutations
主要用于储存公共方法
直接mapMutations()调用或者commit提交以及传值
<template>
<div>
<h1>count的值{{$store.state.count}}</h1>
<h3>mapMutations方法: <input type="button" value="按钮1" @click=add></h3>
<h3>$store.commit()方法: <input type="button" value="按钮2" @click="$store.commit('reduce')"></h3>
<h3>传参方法: <input type="button" value="+10" @click="$store.commit('xx',10)"></h3>
</div>
</template>
<script>
import store from"@/vuex/store";
import {mapState,mapMutations} from"vuex"
export default {
methods:mapMutations(['add']),
store
}
</script>
import Vue from 'vue';//引入vue
import Vuex from 'vuex';//引入vuex
Vue.use(Vuex);//全局使用
var state={ //
count:1,
};
var mutations={
add(state){
return state.count++
},
reduce(state){
return state.count--
},
xx(state,n){
return state.count+=n
}
}
export default new Vuex.Store({//暴露出口
state,mutations
})
4.actions用于异步方法
<template>
<div>
<h1>count的值{{$store.state.count}}</h1>
<h1>mapActions的methods引入: <input type="button" value="+5 3s -1" @click="add1"></h1>
</div>
</template>
<script>
import store from"@/vuex/store";
import {mapState,mapMutations,mapActions} from"vuex"
export default {
methods:mapActions(['add1']),store
}
</script>
import Vue from 'vue';//引入vue
import Vuex from 'vuex';//引入vuex
Vue.use(Vuex);//全局使用
var state={ //
count:1,
};
var mutations={
add(state){
state.count+=5;
return state.count
}
};
var actions={
add1:function(context){
context.commit('add');
setTimeout(()=>{
state.count--
},2000)
}
}
export default new Vuex.Store({//暴露出口
state,mutations,actions
})
5.modules
对于大型项目,进行模块化分组管理,store.js可以引入多个类似于store.js的文件,在总文件进行模块化状态管理
<template>
<div>
<h1>count的值{{$store.state.a.count}}</h1>
<h1>mapActions的methods引入: <input type="button" value="+5 3s -1" @click="add1"></h1>
</div>
</template>
<script>
import store from"@/vuex/store";
import {mapState,mapMutations,mapActions} from"vuex"
export default {
methods:mapActions(['add1']),store
}
</script>
import Vue from 'vue';//引入vue
import Vuex from 'vuex';//引入vuex
Vue.use(Vuex);//全局使用
var state={ //
count:1,
};
var mutations={
add(state){
state.count+=5;
return state.count
}
};
var actions={
add1:function(context){
context.commit('add');
setTimeout(()=>{
state.count--
},2000)
}
}
var moduleA={
state,mutations,actions
}
export default new Vuex.Store({//暴露出口
modules:{a:moduleA}
})
Vuex总结的更多相关文章
- 关于Vue.js 2.0 的 Vuex 2.0,你需要更新的知识库
应用结构 实际上,Vuex 在怎么组织你的代码结构上面没有任何限制,相反,它强制规定了一系列高级的原则: 应用级的状态集中放在 store 中. 改变状态的唯一方式是提交mutations,这是个同步 ...
- vuex复习方案
这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.
- vuex 初体验
vuex是vue的状态管理工具,vue进阶从es6和npm开始,es6推荐阮一峰大神的教程. vuex学习从官方文档和一个记忆小游戏开始.本着兴趣为先的原则,我先去试玩了一把-->. Vuex ...
- vuex(1.0版本写法)
Vuex 是一个专门为 Vue.js 应用所设计的集中式状态管理架构. 官方文档:http://vuex.vuejs.org/zh-cn/ 2.0和1.0都能在此找到 每一个 Vuex 应用的核心就 ...
- 关于Vue vuex vux 文档
01. vue 链接 http://vuejs.org.cn/guide/ 02. vuex ----->>状态管理模块儿<<------- https://vuex.vue ...
- vuex
英文:(Introduction)中文:https://github.com/vuejs/vuex/issues/176(贡献者努力中)
- Vue 2.0 + Vue Router + Vuex
用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...
- Vue2.X的状态管理vuex记录
记住上述的顺序情况:想要改变state,只能通过Mutation,虽然action可以直接改变state,这样会使每个状态可以方便的跟踪和记录(用Devtools跟踪) vue Method -- ...
- 在vue1.0遇到vuex和v-model的坑
事情是这样的,在开发项目的过程中我使用了vuex并且在store中定义了一个保存用户信息的对象 userInfo : { 'nickName' : '', // 昵称 'password' :'', ...
- vuex 笔记
Vuex 笔记 一个简单的状态管理 单一数据源: const sourceOfTruth = {} const vmA = new Vue({ data: sourceOfTruth }) const ...
随机推荐
- xcode禁用ARC(Automatic Reference Counting)
Automatic Reference Counting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入的最大的变革和最激动人心的变化.ARC是新的LLVM 3.0编译器的一项特性, ...
- JAVA 日期处理工具类 DateUtils
package com.genlot.common.utils; import java.sql.Timestamp;import java.text.ParseException;import ja ...
- 维护后面的position sg函数概念,离线+线段 bzoj 3339
3339: Rmq Problem Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1160 Solved: 596[Submit][Status][ ...
- SSM框架整合遇到的问题
1.Maven中Dubbo集成spring2.5以上版本 项目中dubbo集成spring4.x,配置pom时需要注意排除spring的依赖,我这里用的是tomcat,所以把jboss也排除了: &l ...
- PhotoSwipe 图片浏览插件使用方法
一.简介 PhotoSwipe 是专为移动触摸设备设计的相册/画廊.兼容所有iPhone.iPad.黑莓6+,以及桌面浏览器.底层实现基于HTML/CSS/JavaScript,是一款免费开源的相册产 ...
- asp.net实现access数据库分页
最近在编程人生上看到篇文章很有感触,觉得人生还是要多奋斗.今天给大家贡献点干货. <divclass="page"id="ctrlRecordPage"& ...
- 使用 XSLT 作为 HTML 的样式表
简介 当听到样式表这个词时,您可能会想到 CSS 样式表.XSLT 样式表通常用于 XML 转换,比如在 Web 服务之间映射数据.因为 XSLT 非常适合此用途,所以创建了顶层元素 <styl ...
- 通过jquery.validate.js校验表单字段是否合法
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- gitlab使用 —— 多人协同工作(重要技能)
gitlab使用 —— 多人协同工作(重要技能) 学习链接: http://herry2013git.blog.163.com/blog/static/219568011201341111240751 ...
- Vue 脱坑记
问题汇总 Q:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本 /* cnpm website: https://npm.taobao.org/ */ ...