vue学习指南:第十五篇(详细) - Vuex

Vuex

一、基础

  1. Vuex 相当于 vue的数据仓库

  2. Vuex 是 vue 的状态管理工具

  3. Vuex中的 state 只能通过mutations 改变

  4. Vuex很适合做购物车

什么是Vuex?

  Vuex采用集中式存储所有组件的数据状态,并且中间状态和store(后台数据)是响应的。

什么是响应?

  前台的组件数据发生改变了,那后台的store数据都会发生改变,从而导致根这个组件有关联的都会改变,所以很适合做购物车。

Vuex有什么好处?及使用场景?

  好处:可以做状态管理 采用LocalStorage保存信息,数据便一直存储在用户的客户端中。

  使用场景:适合在巨大复杂的项目中使用。

Vuex有什么优势?

  1. Vuex的状态存储是响应式的

  2. 它是所有组件的状态集合

Vuex的核心及其作用

  核心概念:state,getters,mutation,action,module

  作用:组件之间的数据通信,使用单向数据流的方式进行数据的中心化管理

详述Vuex的运行机制

  Vuex的状态存储是响应式的,当Vuex组件从store中读取时,若 store状态发生改变,响应的组件也会更新状态,但是直接改变 state,必须通过显示的提交(commit)mutaions来追踪每个状态的变化。

二、Vuex的流程图:

  1. 每个点都是必须的,不执行那个可以省略,但必须按照流程图走。

Vuex的工作流程:

  在vue组件中,通过 dispatch来触发actions提交修改的数据操作,然后通过actions的commit来触发mutations来修改数据,mutations接受到commit的请求,就会自动通过mutate来修改state里面的数据最后由store触发每一个调用它的组件的更新。

  

Vuex的四种状态:

  1. state:就是数据仓库,也是我们仓库存放数据的地方

  我们组件如果想修改数据,正确的操作流程是:

  2.  查看是同步还是异步,是同步则跳过actions,直接从mutations中修改state的数据,这样state仓库的数据修改了之后,我们才能正确的响应到组件上,所以组件仅仅把事件提交给mutationd就好了,让Vuex的mutations的方法执行。

二、Vuex的使用

下载:

  npm i vuex --save

1. 下载之后 在 main.js 引入 Vuex,我们把Vuex封装在 store.js 里面所有main里引的是 store,优化了main。

2. 创建好脚手架后,在src目录下 创建一个 store文件夹,与components同级,在里面创建一个store.js里面这样写。store里面的每个文件夹写对应的js,然后都引入到store中,注入到store仓库中。

3. 向vm实例下注入store

  1. 将创建的store.js 引入到main.js中

  

  在main文件夹下

  向vm实例注入store,store是创建仓库存放数据的,让store(仓库)成为vm的一个属性

  

记住这两句话

1. vuex 中的 state 都是响应的

2. vuex中的 state 只能通过 mutation 改变

store里面存放的是什么?

store是创建仓库存放数据的,让store(仓库)成为vm的一个属性,它是存放Vuex

三、Vuex的五大核心

第一个、state

1. state:state是Vuex的状态,就是存放数据的地方

2. state属性里面有一个count的属性

3. 唯一修改 state状态的是 mutations

1. 在state文件中

  

2. 在组件中通过 {{ this.$store.state.count }} 来获取

  

第二个、mutations

1. mutations 是处理state的所有事件方法

2. 所有直接修改state的行为都是通过mutations

3. 在store中的mutations.js 中:mutations是不对外暴露的,外界无法看的

  

2. 在组件中的 home中

  1. 组件中的事件,通过this.$store.commit("mutations 中的事件名")

  

3. 通过绑定事件进行修改

  

第二中写法载荷

  1. 第一个参数 是 state 存放所有事件方法的参数

  2. 第二个参数 payload 载荷,载荷是传输额外的参数,载荷其实是个对象 可以是字符串 number object

  

  

  1. 在 home 组件里面

  

  

第三个、actions

  1. actions和mutations 是一样的,都是存放事件方法,actions里面存放的是异步方法(定时器)

  2. 组件通过 this.$store.dispatch("")

  3. commit 直接提交给 modules

  4. dispatch提交给actions

  5. dispatch提交给actions

  6. actions 如果我们涉及到异步的提交数据,那就只能从actions开始,到mutations然后才能修改state中的数据,最后渲染到vue组件上。

  7. 如果我们不这样操作,虽然我们的数据因响应式的也可以正常渲染页面,但是我们的Vuex的仓库state,却不能正常的显示。

操作步骤:

  1. vue组件上,我们提交的方式

  

  2. 对我们Vuex的实例建立一个仓库,放一个数据

  

  3. 组件将方法提供给 actions,actions触发行为提交给 mutations,mutations直接去改

  4. 组件将这个行为通过dispatch委托给actions,actions在通过commit委托给mutations的function

    

第四个、getters

1. getter和computed计算属性一样的

2. computed计算属性 只是各个组件自己的

3. computed 计算属性

4. getters只针对state

操作步骤

  1. 通过 $store.getters,fnarr是getters返回的处理后的数据

  

  2. 把处理后的数据返回给fnarr函数

  

第五个、module

  思想:就是将我们写在一起的东西,分开,比如 state仓库的数据,我们可以使用es6的模块化开发,来引入别的模块的数据,先达到文件分离的目的。

  我们还可以使用 module对象,来使我们的仓库分离,只是state仓库中的数据不一样,但别的东西都一样。

  操作步骤:

  1. 在home组件中写

  

  

  2. Vuex的写法

  

作者:晋飞翔
手机号(微信同步):17812718961
希望本篇文章 能给正在学习 前端的朋友 或 以及工作的朋友 带来收获 不喜勿喷 如有建议 多多提议 谢谢!!!

原文地址:https://www.cnblogs.com/jinfeixiang/p/12175502.html

时间: 2024-10-04 12:04:07

vue学习指南:第十五篇(详细) - Vuex的相关文章

vue学习指南:第十一篇(详细) - Vue的 路由 第一篇 ( router )

一.路由的配置 路由  vue-router 1. 什么是路由? 路由相当于一个配置对象 路由:就是我们通过不同的url访问不同的内容,通过angular.js 可以实现多视图的单页,现在流行的单页面开发模式. 2. 路由在web 有两种: 第一种 hash hash值前面带 # "  https:   //    user   :   pass   @ sub.example.com : 8080   /p/a/t/h  ?  query=string  #hash " 第二种是 h

Egret入门学习日记 --- 第二十五篇(书中 9.16~9.17 节 内容)

第二十五篇(书中 9.16~9.17 节 内容) 对于昨天的关于 List 组件使用的问题,我打算到书中提到List之后,再回头补充. 还有就是 Scroller 的 TileLayout 布局方式,也要去研究一下. 好了,开始按照书中内容一步一步走. 开始 9.16节. 重点: 1.设定TabBar皮肤. 2.设置TabBar布局. 操作: 1.设定TabBar皮肤. 第一步,准备素材! 第二步,创建 exml 文件! 第三步,拖入组件!约束大小! 第四步,增加两个状态 down 和 up.

第十五篇 Integration Services:SSIS参数

本篇文章是Integration Services系列的第十五篇,详细内容请参考原文. 简介在前一篇,我们使用SSDT-BI将第一个SSIS项目My_First_SSIS_Project升级/转换到SSIS 2012.在这一篇,我们将探讨SSIS变量的姊妹:SSIS参数.我们将展示参数配置,通过包参数管理动态属性值,以及在SSIS包执行期间参数是如何配置和使用的.首先在SSDT-BI打开转换过的My_First_SSIS_Project,如图15.1所示:图15.1My_First_SSIS_P

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

Android学习笔记(十五)——碎片的生命周期(附源码)

碎片的生命周期 点击下载源码 与活动类似,碎片具有自己的生命周期.理解了碎片的生命周期后,我们可以在碎片被销毁时正确地保存其实例,在碎片被重建时将其还原到前一个状态. 1.使用上一篇的项目Fragments,在Fragment1.java文件中添加如下代码: package net.zenail.Fragments; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragm

我的MYSQL学习心得(十五)

我的MYSQL学习心得(十五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(十三) 我的MYSQL学习心得(十四) 这一篇<我的MYSQL学习心得(十五)>

VSTO学习笔记(十五)Office 2013 初体验

原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 2013平台,即VSTO 5.0. 本系列所有测试代码均在Visual Studio 2012 Ultimate RC + Office 2013 Professional Plus x64 Preview 上测试通过 为了配合Windows 8,微软的很多软件风格都逐渐Metro化,Office作为拳头

我的MYSQL学习心得(十五) 日志

原文:我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的

angular学习笔记(二十五)-$http(3)-转换请求和响应格式

本篇主要讲解$http(config)的config中的tranformRequest项和transformResponse项 1. transformRequest: $http({ transformRequest: function(data){ //对前台发送的data进行处理 return data } }) 这个在测试的时候遇到了很大的问题.只要经过transformRequest函数处理,哪怕是不做任何处理,node后台都会报错,需要尝试使用php 2. transformResp