Vue(三):vuex是什么
vuex官网介绍
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
vuex通俗理解
vuex就像一个无形的仓库,公共的状态我们会抽离出来放进里面。
vuex的核心主要包括以下几个部分
state:存放的我们上面所提到的状态
mutations:存放如何更改状态
getters:从state中派生出状态,比如将state中的某个状态进行过滤然后获取新的状态
actions:是mutation的加强版,它可以通过commit mutations中的方法来改变状态,最重要的是它可以进行异步操作。
modules:当用这个容器来装这些状态还是显得混乱的时候,我们就可以把容器分成几块,把状态和管理规则分类来装。这和我们创建js模块是一个目的,让代码结构更清晰。
下面我们使用vuex来做一个小功能
安装vuex
cnpm install vuex --save-dev
那么如何使用呢?
我们以一个vue项目来说明下
首先我们需要在type.js中定义mutations事件类型,比如改变左侧侧边栏的状态。type.js如下
export const CHANGE_LEFTNAV_STATUS = 'CHANGE_LEFTNAV_STATUS
我们的sidebar.vue组件刚开始是看不到的,只有点击头部菜单的按钮才会出现,所以一开始这个侧边组件会有一个初始状态,我们可以这样去写
<div class="sidebar-container" @click='hideNav' v-show="show">
然后我们在计算属性中这样写
show:function(){
return this.$store.getters.leftNavState
}
由于我们在vue实例中注入了vuex 所以我们可以通过this.$store来访问需要的仓库,我们在com.js中这样写
import * as types from '../types'
/**
* App通用配置
*/
const state = { leftNavState:false
} const actions = { //左侧导航栏的开关
changeLeftNavState({commit},status){
commit(types.CHANGE_LEFTNAV_STATUS,status)
}
}
const getters = { leftNavState: state => state.leftNavState
}
const mutations = {
[types.CHANGE_LEFTNAV_STATUS](state,status){
state.leftNavState = status
}
} export default {
state,
actions,
getters,
mutations
}
当访问this.$store.getters.leftNavState我们会得到它的值state=>state.leftNavState相当于传入state参数,返回state.leftNavState的值,由于我们在state中声明了leftNavState:false所以this.$store.getters.leftNavState得到的值为false所以就不会看到侧边栏组件,当然当你改成true的时候就会看到了。
这里需要说明一个一个完整的module 需要包括四个部分state,getters actions mutations,state来存放需要操作的状态 gettes类似于计算属性,改变数据有只能通过提交到mutations方式,一种是异步的,定义在actions然后提交到mutation,通过dispach来分发,另外一种是同步的直接通过commit来触发
然后我们来实现侧边栏的点击显示
我们在head
<a class="go-menu" @click="showNav"><i class="icon iconfont icon-menu"></i></a>
然后在methods中这样写
showNav: function () {
return this.$store.dispatch('changeLeftNavState', true)
}
正如上面所说异步的点击事件定义在actions中通过dispach分发,所以this.$store.dispatch会唤醒定义在actions中的方法
changeLeftNavState({commit},status){
commit(types.CHANGE_LEFTNAV_STATUS,status)
}
//actions中的事件需要提交到mutations
const mutations = {
[types.CHANGE_LEFTNAV_STATUS](state,status){
state.leftNavState = status
}
这样仓库中的state.leftNavState的值就变成了你传入的值true。从而我们就看到了侧边栏组件
同样道理我们如果要点击隐藏这个组件那么就在sidebar.vue中这样写
<div class="sidebar-container" @click='hideNav' v-show="show">
然后我们在methods中这样写
methods:{
hideNav(){
this.$store.dispatch('changeLeftNavState',false)
}
}
这样我们就利用vuex完成了一个点击事件类型.
具体vuex到底是如何使用的,还是需要大家自己去看文档摸索的。任何项目都可以看做一个公式在我看来,我们不需要死机公式,我们要理解这个公式,这个公式就像一条线,能让我们一提起来vue就知道如何快速构建和实现一个vue项目,可以试着自己总结下。
Vue(三):vuex是什么的更多相关文章
- Vue 2.0 + Vue Router + Vuex
用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...
- Vue之Vuex
一.什么是vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.简单来说就是一个数据统一 ...
- requirejs、vue、vuex、vue-route的结合使用,您认为可行吗?
在五一节之前和一网友讨论前端技术时,对方提到vue.vue-route如果配合requirejs应用.当时的我没有想得很明白,也没能这位网友一个准确的回复,但我许诺于他五一研究后给他一个回复.本是一天 ...
- Vue中Vuex的详解与使用(简洁易懂的入门小实例)
怎么安装 Vuex 我就不介绍了,官网上有 就是 npm install xxx 之类的.(其实就是懒~~~哈哈) 那么现在就开始正文部分了 众所周知 Vuex 是什么呢?是用来干嘛的呢? Vuex ...
- vue:vuex中mapState、mapGetters、mapActions辅助函数及Module的使用
一.普通store中使用mapState.mapGetters辅助函数: 在src目录下建立store文件夹: index.js如下: import Vue from 'vue'; import ...
- 15.vue动画& vuex
Vue.config.productionTip = false; ==是否显示提示信息== ==import/export== export xxx 必须跟跟对象或者和定义一起 对象: export ...
- 深入浅出的webpack4构建工具--webpack4+vue+route+vuex项目构建(十七)
阅读目录 一:vue传值方式有哪些? 二:理解使用Vuex 三:webpack4+vue+route+vuex 项目架构 回到顶部 一:vue传值方式有哪些? 在vue项目开发过程中,经常会使用组件来 ...
- vue:vuex详解
一.什么是Vuex? https://vuex.vuejs.org/zh-cn 官方说法:Vuex 是一个专为 Vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相 ...
- 一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app
一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 ...
- webpack4 + vue + vue-router + vuex
ps: 所有案例使用的 node 及 npm 版本如下 node版本: v8.4.0 npm: 5.3.0 下一个案例默认是接着上一个继续写的 建议先熟悉以下文档 vue vue-router vue ...
随机推荐
- 使用paramiko中 Server not found in known_hosts的错误解决
报错的格式如下: 主要是缺少set_missing_host_key_policy配置信息. set_missing_host_key_policy方法,是制定连接远程主机没有本地密钥或HostKey ...
- SSM实战——秒杀系统之Service层接口设计与实现、Spring托管、声明式事务
一:Service层接口设计 准备工作:新建三个包:service包.exception包.dto包,分别用来存放业务接口.自定义异常类.dto类. 1:定义接口 package org.myseck ...
- Linq to entity 执行多个字段排序的方法
可以连续使用:OrderBy,ThenBy 或者 OrderByDescending,ThenByDescending var data = db.User .Where(u => u.User ...
- 深入理解JVM(三)——垃圾收集策略具体解释
Java虚拟机的内存模型分为五个部分.各自是:程序计数器.Java虚拟机栈.本地方法栈.堆.方法区. 这五个区域既然是存储空间,那么为了避免Java虚拟机在执行期间内存存满的情况,就必须得有一个垃圾收 ...
- Android开发之使用Handler刷新UI控件
一.为什么必须使用Handler 线程安全问题 这个问题要理解的话很容易,如果没有这个约束,那么同时有两个线程对一个UI控件进行调整,那么控件自然就没法正常的工作,而为了解决这种二义性(就是一个东西同 ...
- SICK TiM561激光雷达的使用
TIM系列激光扫描传感器原理: 激光发射器发出激光脉冲,当激光碰到物体后,部分激光反射回激光接收器.通过计算发射/接收脉冲时间差,可以计算出距离值.激光扫描器连续不停的发射激光脉冲,由旋转的光学机构将 ...
- excel主题使文档更加具有专业化
如上图所示,表格或图表有很多的配色方案. 1.每个主题,会有一套配色方案,而且这些配色方案相对来讲都是比较协调统一的, 2.页面布局----主题,选择好主题之后再套用配色方案
- DUBBO本地搭建及小案例 (转)
DUBBO的介绍部分我这里就不介绍了,大家可参考官方文档. DUBBO的注册中心安装 DUBBO的注册中心支持好几种,公司用到zookeeper注册中心,所以我这边只说明zookeeper注册中心如何 ...
- Window查看系统激活状态
Window小技巧 #快捷键 Win+G --录像 psr --问题记录器 #查看系统激活信息 WIN键+R调出运行框,在运行框中cmd winver 回车后就能看到当前系统的版本 slmgr.vbs ...
- notepad++插件实现json、xml格式化
notepad++比较出色的免费的数据编辑.格式化工具... 现在json.xml文件很流行.格式化也是必须的,方便查看关键信息! 01.下载notepad++及相关插件 npp_7.5.5-x86: ...