2019独角兽企业重金招聘Python工程师标准>>>

vuex 主要服务于中大型的单页应用(比较小的就没必要了),是一个类似于  Flux  的一个数据管理框架,让我们的应用内的的状态保持在可维护、可理解的状态;

开始主题:

一 安装:

直接下载:https://unpkg.com/vuex  (不推荐)

npm: npm install vuex

    注意:由于vuex其内部用了很多ES6的语法,建议使用wabpack等工具自动转ES5,搭建项目。
    考虑到很多同学多ES6还是不是很熟悉,本教程基本都是用ES5来说明

二 认识store

store是整个应用的状态的中心,但是区别于其他全部对象的是:1、store是响应式,就是会随着专题改变,而实时改变,而vue组件读取其中的状态也就可以被实时更新。2、store的状态并不能直接改变,必须通过提交更改(一个特定的函数),而改变。这也是保证了数据单项流动;
    例子:

var store = new Vuex.Store({state: {count: 0},mutations: {increment:function (state) { //改变store状态的方法state.count++}}
})store.commit('increment') //通过commit调用改变状态的increment方法
console.log(store.state.count) //1

三 state、getters、Mutations、actions简介

state: 类似是vue中的date,用户储存数据;
getters: 类似vue中的computed,计算属性;
mutations: 类似于vue中的methods,逻辑方法。注意:这里面的方法必须是同步的,因为这里的方法将直接修改state的状态,从而改变store的状态,如果是异步的话将无法控制state状态改变的先后顺序,使得整个store状态变的不可控。还有一点是 vue-devtools 这个工具是根据这个来记录改变的状态;
actions:实际分发 mutations 里面的方法。

整个逻辑可以看一下官方的一个经典图:


通过这张图我们可以看到这几点:
    1.数据是单项,
    2.actions是通过组件来调用的
    3.devtools记录mutaions的状态
    4.store的状态只有被muations改变
    5.当store的状态被改变,组件也会变实时刷新

四 实战案例 (购物车)

首先是搭建项目:

我用的是vue的脚手架工具 vue-cli (npm安装:npm install --global vue-cli )
    npm:vue init webpack vuex-demo
    npm: npm install 
    npm: npm install vuex --save
    最后经过修改的项目结构
    

主要增加store文件夹。

项目结构目录解释:
    api:
获取服务器的获取数据方法
    store 下面的 index.js: store的根目录,保存项目所以状态(对模块和模块之间公共状态 组件)
    store 下面的 modules: vuex由于状态都是基于stroe,但是顺着项目内容的增加,stroe就会变的非常臃肿,所以vuex允许我们把store分成几个modules,每个modules都是自己的state、getter、mutation、actions。
    store 下面的 getter.js 和 actions.js :这两个主要是管理模块之间状态

注意:这我就详细讲一下:对于产品获取、展示的这个一个过程

首先获取产品:

首先要在product中保存产品,就需要在product中创建:

 var state = {all:[] //获取的商品
}

要改变state中的状态,只有通过mutations:

 var mutations = {receive_product:function(state,products){state.all = products;},
}

而调用muations中的方法,需要actions:

//调用获取产品的
import api_product from '../api/products.js' //调用获取商品列表方法的action
var getAllProducts = function(context){var commit = context.commit;api_product.getProducts(function(products){//console.info(products)commit("receive_product",products)})
} 

而这里获取产品就需要通过API来,这个我模拟获取数据

/*** 模拟服务器获取数据*/var _products = [{"id": 1, "title": "iPad 4 Mini", "price": 500.01, "inventory": 2},{"id": 2, "title": "H&M T-Shirt White", "price": 10.99, "inventory": 10},{"id": 3, "title": "Charli XCX - Sucker CD", "price": 19.99, "inventory": 5}
]export default {//模拟获取getProducts:function(callback){setTimeout(callback(_products), 300)},}

最后通过在vux组件(product)中调用actions:

created () {this.$store.dispatch('getAllProducts')}

展现刷新产品:

从store中获产品,由于动态所以必须在computed获取:

computed: mapGetters({products: 'allProducts',}),

这里要解释:mapGetters,是vuex为我们提供的一个工具函数,方便我们调用getter的方法

由于这个商品,会和购物车模块有联系所以我们单独写在 getter.js 中的方法:

//商品列表
var allProducts = function(state){return state.products.all;
}

通过获取protuct模块下的state中的all,这样我们就动态的创建产品

最后通过图片我们在回顾一下整个过程


完整案例下载地址:https://github.com/gu091120/vuex-demo.git

看完了记得点个赞,或者来留言喷喷我哈!

转载于:https://my.oschina.net/gujieyi/blog/768670

10分钟,快速使用VUE-VUEX相关推荐

  1. 10分钟快速配置sublime2支持jQuery开发

    昨天介绍了javascript的开发工具sublime 2 edit,今天我们将介绍如何10分钟快速配置sublime2支持jQuery开发.希望大家能喜欢着款jQuery开发工具. 相关介绍:使用s ...

  2. python的spider程序下载_PHPspider爬虫10分钟快速教程(内附python教程分享)

    说到做爬虫,大家都可能第一时间想到的是python,其实php也是可以用来写爬虫程序的.php一贯简洁.易用,亲测使用PHPspider框架10分钟就能写出一个简单的爬虫程序. 一.PHP环境安装 和 ...

  3. 转载文章-【工具】10分钟快速搭建属于自己的文档网站-来自掘金

    掘金 首页 探索掘金 搜索 lvhanghmm的头像 Gopal lv-4 2021年03月09日 阅读 9930 关注 [工具]10分钟快速搭建属于自己的文档网站 前言 很多同学都希望能够拥有自己的 ...

  4. 文字识别软件测试初学者,【只要10分钟 快速掌握文字识别】

    [只要10分钟 快速掌握文字识别] 教程 1.获取接口权限       2.下载接口调用工具       3.进行接口调用 具体步骤如下: 1.获取接口权限 1.1  登录网址:ai.baidu.co ...

  5. 【华为云技术分享】10分钟快速在华为云鲲鹏弹性云服务器上部署一个自己的弹幕网站!

    摘要:从零代码开始,10分钟快速开发一个可以发送弹幕的网站,并将其部署在华为云服务器上:学完本期教程,将知道如何使用Nginx.如何将自己的网站部署到云服务器上. 直播相信大家都不陌生了吧,大家经常会 ...

  6. 【工具篇】10分钟快速学会React图表搭建

    10分钟快速学会React图表搭建 本次紧着之前的antd,接着学习有关react图表以及富文本编辑器的搭建. 本次的功能实现基于上次的[工具篇]10分钟学会Ant Design of React用法 ...

  7. python爬虫十分钟速学教程_PHPspider爬虫10分钟快速教程

    说到做爬虫,大家都可能第一时间想到的是python,其实php也是可以用来写爬虫程序的.php一贯简洁.易用,亲测使用PHPspider框架10分钟就能写出一个简单的爬虫程序. 一.PHP环境安装 和 ...

  8. 新浪付稳:揭秘微博如何10分钟快速应对百亿级访问量

    本文转载自:新浪付稳:揭秘微博如何10分钟快速应对百亿级访问量 新浪微博几亿+的用户量,热点事件给其带来数倍流量瞬间暴增,如何不影响用户体验,又不增加巨大的服务器成本投入对技术是一个挑战. 作者:谢海 ...

  9. 10分钟快速构建汽车零售看板

    此文已由作者王文开授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 要说整车厂的核心业务是什么,说白了就是两个:一个是造车,一个是卖车:我今天想来聊一聊卖车,也就是整车厂的销售 ...

  10. Spring Boot 永远滴神!10分钟快速入门

    为什么是 SpringBoot 因为目前开发 WEB 应用,Spring Boot 是启动 Spring 项目最快最流行的方式了.无论我们要构建一个什么样的应用,它都可以让我们尽可能快的启动运行起来. ...

最新文章

  1. 实现UILabel渐变色效果
  2. 没有足够多的数据怎么办?计算机视觉数据增强方法总结
  3. js导入,导出exel表格
  4. Tomcat源码分析(九)--Session管理
  5. 休眠:DDL模式生成
  6. g开头的C语言编程软件,C语言函数大全(g开头)
  7. SQL server 存储过程实现统计赋值
  8. DaDa英语宣布12月31日起全面停止所有外教服务
  9. 苹果iOS 13重大更新曝光:暗黑主题即将到来
  10. 记一次2048小游戏开发
  11. 如何使用jquery处理json数据
  12. 威纶触摸屏485轮询通讯_威纶通触摸屏与PLC实现一机多屏通讯方法
  13. C 与 C++ 谁的效率高,为什么?
  14. 一些名人语录(不断添加中...)
  15. 使用阿里云OSS上传本地资源(图片、文件、音频、视频)
  16. 从龟速 11s 到闪电 1s,详解前端性能优化之首屏加载
  17. 《高效学习法》思维导图——Jan
  18. Mac 不能打开文件夹xxx 因为您没有权限查看其内容
  19. 腰部减肥3个秘诀 腰围速减2cm
  20. AdminLTE入门使用

热门文章

  1. Java虚拟机内存模型初步学习
  2. myeclipse安装、导入一个项目、解决2个程序错误、解决运行错误、运行项目
  3. 图解动软代码生成器使用
  4. 用C#实现计算机图形学算法
  5. Windows建立目录软连接
  6. gantt project 使用
  7. sql 2008数据库日志清理(转)
  8. P3572 [POI2014]PTA-Little Bird
  9. 2_常用样式-border
  10. 安德鲁斯Launcher得到的装在手机的应用程序列表