vuex总结

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

上面是官网对vuex的解释,然而还是不能确切知道vuex是什么,下面我就来说一下我对vuex的理解以及在使用过程中的心得体会。

vuex就像一个无形的仓库,公共的状态我们会抽离出来放进里面。vuex的核心主要包括以下几个部分

  • state
  • mutations
  • getters
  • actions
  • modules

    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来触发

然后我们来实现侧边栏的点击显示

我们在header.vue中这样写

<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项目,可以试着自己总结下。这个项目一定会让你学到很多的。

vuex到底是个啥的更多相关文章

  1. vuex到底是什么?

    vuex到底是什么? 使用vue也有一段时间了,但是对vue的理解似乎还是停留在初始状态,究其原因,不得不说是自己没有深入进去,理解本质,导致开发效率低,永远停留在表面, 更坏的结果就是refresh ...

  2. 挑战全网最幽默的Vuex系列教程:第一讲 Vuex到底是什么鬼

    先说两句 官方已经有教程了,为什么还要写这个教程呢?说实话,还真不是我闲着蛋疼,官方的教程真的是太官方了,对于刚入门 Vuex 的童鞋来说,想必看官方的教程,很多地方就如同看圣经一样,比如「欧玛尼玛尼 ...

  3. 4.VUEX到底是什么

    关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来一堆flux.redux.state.state之类的概念,以及大型工程必要性之类的.看官方手册也是昏昏然. 然而,我还是弄懂了!我准备 ...

  4. 理解vuex的状态管理模式架构

    理解vuex的状态管理模式架构 一: 什么是vuex?官方解释如下:vuex是一个专为vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的 ...

  5. Vue(三):vuex是什么

    vuex官网介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue ...

  6. Vuex 入门指南

    1.Vuex是什么? 我们还是像以往一样先看一看官方文档对此的解读(Vuex 是什么? · GitBook) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的 ...

  7. 浅谈vuex

    很多技术,刚接触的时候:这是啥?用的时候:哟嚯,是挺好用的!加以研究:卧槽,就是这么个逼玩意儿! 最近接手了一个别人写了1/5的vue项目(页面画了1/3,接口啥都没对); 对于表格中的数据项操作以及 ...

  8. 一篇搞定Vuex

    1.简介 首先,你必须明显明白vuex到底是干啥的,主要解决开发中的哪些问题? Vuex是一个专门为Vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证 ...

  9. 五分钟搞懂Vuex

    这段时间一直在用vue写项目,vuex在项目中也会依葫芦画瓢使用,但是总有一种朦朦胧胧的感觉.于是决定彻底搞懂它. 看了一下午的官方文档,以及资料,才发现vuex so easy! 作为一个圈子中的人 ...

随机推荐

  1. 简单mysql常用命令

    在命令行 输入 mysql -uroot -p123456 (-u账号 -p密码)登入mysql服务器 1.设置mysql密码set password for 'root'@'localhost' = ...

  2. Scala里面如何使用枚举

    枚举通常用来定义已知数量的常量,比如月份,星期,季节等等,用过java的人都知道定义枚举的关键字是enum,在scala里面和java有所不同,来看一个完整的例子定义: object EnumTest ...

  3. Y2K Accounting Bug(poj2586)

    题意: 有一个公司由于某个病毒使公司赢亏数据丢失,但该公司每月的 赢亏是一个定数,要么一个月赢利s,要么一月亏d.现在ACM只知道该公司每五个月有一个赢亏报表,而且每次报表赢利情况都为亏.在一年中这样 ...

  4. liferay增删改简单小练习

    liferay简单增删改 大家都知道,我们每学习一项技能的时候,都会做一些简单的小实例,来检验我们学习成果,这个也不例外. 我建议大家学习完三大框架之后再来看这个demo. 首先:先说一下,零碎的知识 ...

  5. RVDS编译器

    不同ARM的体系结构,使用的ARM RealView编译工具时的异同点. 1)ARM体系结构v6K首次引入对4个CPU的MPCore处理器支持,高效的多重处理系统与单CPU系统相比,功耗更低,散热量更 ...

  6. bind,live,delegate

    .live() 到目前为止,一切似乎很完美.可惜,事实并非如此.因为.live()方法并不完美,它有如下几个主要缺点: $()函数会找到当前页面中的所有td元素并创建jQuery对象,但在确认事件目标 ...

  7. Python: 去掉字符串开头、结尾或者中间不想要的字符

    ①Strip()方法用于删除开始或结尾的字符.lstrip()|rstirp()分别从左右执行删除操作.默认情况下会删除空白或者换行符,也可以指定其他字符. ②如果想处理中间的空格,需要求助其他技术 ...

  8. 数据仓库原理<4>:联机分析处理(OLAP)

    本文转载自:http://www.cnblogs.com/hbsygfz/p/4762085.html 1. 引言 本篇主要介绍数据仓库中的一项重要分析技术——联系分析处理(OLAP). 在第一篇笔者 ...

  9. linux常用命令:chown 命令

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  10. Zookeeper学习记录(二):使用以及配置

    zookeeper已经介绍了它的原理设计以及实现方式,我们接下来介绍zookeeper的使用方法以及简单配置. 下载 获取Zookeeper的发布包,从Apache下载映像中下载一个最新稳定版本. 单 ...