vuex是什么鬼?

文档上面对vuex的解释是 "一个专为 Vue.js 应用程序开发的状态管理模式",恩,看完这句是否对vuex有了一个大概的认识?

答案是:"认识你个蛇头"。

好吧,在我的认识里,vuex其实就是将组件中的数据集中起来管理的东西,vue是一个根据数据渲染视图的框架,当组件中的数据变化了,视图相应的产生变化,那这里的数据变化,也可以称作是状态变化,所以官方给的解释是一个 "状态管理模式"。

了解一下vuex的安装和使用

  • 和vue-router差不多,直接用包管理工具安装即可 -- npm install vuex / yarn add vuex
  • 在入口文件中引入 vuex ,在注册到Vue实例中
import Vuex from 'Vuex'
Vue.use(Vuex)

使用vuex

  • 既然vuex是一个把数据集中起来管理的东西,那么我们将数据集中在哪里?
  • 怎么访问这些集中起来的数据?
  • 如果这些数据需要修改计算,那么用何种方式计算这些数据?

开始使用vuex,vuex用数据仓库(store)来管理被集中起来的数据,我们在使用vuex的时候,首先new一个Vuex.store的实例,为了管理方便,一般我们新建一个目录专门用来存放store仓库,在vuex中需要用到vue,所以首相引入vue,vuex,再通过new方法构建出一个数据仓库的实例。

import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex);
export default new Vuex.store({参数对象})

在根组件中引入这个Vuex.store实例,将其注册到Vue实例中

import Vue from 'vue'
import App from './App'
import router from './router'
import Vuex from 'Vuex'
import store from './store' //引入Vuex.store实例 Vue.config.productionTip = false Vue.use(Vuex); new Vue({
el: '#app',
router,
store, //把Vuex.store的实例给到Vue实例中的store属性
template: '<App/>',
components: { App }
});

在创建实例的时候传入的参数对象中,有一个state属性,在这个属性中用来存放全局的应用数据,组件中的data存放的是局部数据。

在我们把Vuex.store实例注入到Vue实例中的时候,Vue实例对象下就会多出来一个属性:$store,我们在组件内部可以通过this.$store来访问这个Vuex.store实例。通过this.$store.state来访问被存起来的全局数据。

为了满足对数据的各种操作,在Vuex.store实例对象参数中除了state之外还有很多属性:

  • getters

    • 在这个属性中存放着state原始数据的派生数据,类似于组件中的计算属性,当我们在state中取出的原始数据需要早计算之后再使用的时候,可以用getters来对数据进行处理。
    • getters属性的值是一个对象,对象下存放着计算数据的方法,这些方法接收两个参数
      • store的state (原始数据)
      • store的getters (计算后数据)
  • Mutation
    • 从外部更改store中数据的唯一方法就是在外部提交一个mutation,当组件在使用数据的过程中,通过用户的操作或其他途径需要对store中的数据进行修改时,不能直接修改,唯一的办法是向store提交一个mutation,store的Mutation属性下检测提交的mutation,将修改数据的工作交由Mutation处理
    • this.$store.commit('事件名',事件处理函数的参数)
    • 在Vuex.store的实例参数中的Mutation中声明这个事件处理函数,对数据进行处理
  • Action

    在Vuex中除了Mutation还有一个属性可以用来修改数据,和Mutation类似,但又不同,不同之处在于:

    - Mutation处理之后不会返回任何结果

    - Action 处理提交的也是Mutation,不是直接更改状态(数据),Action可以包含任意异步操作

    - Action通过 this.$store.dispatch('事件名',参数)

    - 如果我们希望store修改完数据以后会返回数据给组件,那么使用actions,否则使用mutations

vuex是什么东西?的更多相关文章

  1. 04 DRF内容回顾、用户登录 (含跨域) (vuex vue-cookie)、用户认证 (Auth认证)(拦截器)

    1.内容回顾 1.视图中常见的继承 2.频率访问控制源码 3.序列化,反序列化 2.初始化代码 1.后端代码:AuthView (1)目录结构 (2)urls (3)view (4)注释掉cors ( ...

  2. vue项目缓存最佳实践

    需求 在开发vue的项目中有遇到了这样一个需求:一个视频列表页面,展示视频名称和是否收藏,点击进去某一项观看,可以收藏或者取消收藏,返回的时候需要记住列表页面的页码等状态,同时这条视频的收藏状态也需要 ...

  3. js 的七大原则--单一原则、开闭原则、替换原则(一)

    一.前言: js 的七大设计原则: 1.单一原则 2.开闭原则 3.里氏替换原则 4.依赖倒转原则 5.接口隔离原则 6.合成复用原则 7.迪米尔法则 二.单一原则 1.定义:单一原则就是一个对象或者 ...

  4. 摘抄大神对VUE 中slot-scope的深度理解

    Vue的slot-scope的场景的个人理解 这篇文章不是单纯把文档的话和api拿来翻译和演示,而是谈谈我对于slot-scope的使用场景的个人理解,如果理解错误,欢迎讨论! Vue的插槽slot, ...

  5. 低耦合高内聚 - 不要把所有东西都放在 vuex中

    我就举一个例子.比如,我想看电视,是否需要遥控器??请认真思考这个问题. 看似电视与“我”已经解耦了.然而,我需要通过遥控器去看电视,我的目的是看电视,但是我却需要依赖遥控器这个中间件.这就变相地将“ ...

  6. 关于Vue vuex vux 文档

    01. vue 链接 http://vuejs.org.cn/guide/ 02. vuex  ----->>状态管理模块儿<<------- https://vuex.vue ...

  7. Vue2.X的状态管理vuex记录

    记住上述的顺序情况:想要改变state,只能通过Mutation,虽然action可以直接改变state,这样会使每个状态可以方便的跟踪和记录(用Devtools跟踪) vue Method   -- ...

  8. 我的音乐盒子(nodejs7 + koa2 + vue + vuex + vue-router)

    你们知道的,nodejs对jser来说,是个好东西,快快的,自从接触nodejs后,总想弄点东西. 这弄个啥了,一天打开百度音乐盒,哟,自己弄一个如何了,好啊好啊. 后台: nodejs 7 + ko ...

  9. 学习vue 20天,我写了点东西

    往昔 最初团队里使用Angularjs进行开发,刚开始还好,到了项目后期越发感觉Angularjs太重了,以至于后来重构项目时,毅然放弃Angularjs,投入了Vue的怀抱.除了组建团队时,是我搭建 ...

随机推荐

  1. 怎么去掉织梦网站首页带的index.html/index.php

    方法1. 1)在空间面板里面找到默认首页设置: 我们是需要去掉index.html,这时我们只需要把index.html这个把它移到最顶级去就行,然后点击确定,在打开网站刷新下,就基本可以解决了! 其 ...

  2. phpstorm(或webstorm) 打开后 一直停留在scanning files to index....,或跳出内存不够的提示框

    记得3月份做项目时就遇到过这个问题,当时解决的 ,但是忘记怎么解决的啦,所以 ,写博文是多么的重要啊. 说明: 在npm install 后,会出现Scanning files to index .. ...

  3. centos利用yum安装卸载软件常用命令

    来自:http://tech.v01.cn/Linuxchangjianwenti/changyongruanjiananzhuangyucao/2012/0119/70.html 一.使用yum安装 ...

  4. asp.net -mvc框架复习(10)-基于三层架构与MVC搭建项目框架

    一.三种模式比较 1.MVC框架(适合大型项目) (1).V视图 (网页部分) (2).M模型 (业务逻辑+数据访问+实体类) (3).C控制器 (介于M和V之间,起到引导作用) 2.三层架构 (1) ...

  5. Oracle 数据库中在使用中文模糊查询时输入中文查询不到结果的解决方法

    添加环境变量 变量名:NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

  6. ASP.NET Core 一步步搭建个人网站(6)_单页模式和优化

    前言 HI,有段时间没有更新了,主要因为第一年前事情比较多,有些事得忙着张罗下:第二呢,对个人网站进行了一次大范围的优化,主要是申请的云服务器资源有限,1m的网络带宽,带上图片展示的话,打开网站的平均 ...

  7. Django之modelform组件

    一.简介与基本使用 简介:django中的modelform组件同时具有model和form作用,但是耦合度比较高,当项目需要拆分时候就比较困难了,所以在使用modelform时候需要先考虑项目的扩展 ...

  8. 实现鼠标hover动画效果自己理解的两种方法——练习笔记

    练习前端技术学院的任务,需要实现"导航栏中的链接,随着鼠标悬浮的位置,相应的链接下出现红色线段"的效果(如图1),我的理解有简易与稍显复杂一些的方法: 首先想到的就是直接利用伪元素 ...

  9. RSync实现文件备份同步,rsync服务器

    转自:http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html [rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是wi ...

  10. Django_中国化

    需求: 要求Django显示中文,并使用北京时间 问题原因: Django具有相当的国际化,已经内置了多种语言,汉语当然也不落下,Django默认的时间是utc时间,也就是说相隔八个时区的中国,显示北 ...