Vuex最详细教学

作者: 扶得一人醉如苏沐晨 | 来源:发表于2022-06-02 07:41 被阅读0次


一、Vuex单界面到多界面状态管理切换:

1.安装配置vuex,版本依赖

vue2的项目使用vuex3,vue3的项目使用vuex4

npm install vuex --save  这个指令默认安装Vuex4
npm install vuex@3    @代表安装指定版本的Vuex3

2.创建 store/index.js 文件

3.main.js 中引入 store/index.js

二、Vuex-devtools安装应用

在Chrome安装devtools插件打开项目之后:可以看到和实时监控state的数据

三、Vuex的基本使用

Vuex的响应式原理:

Vuex的store中的state是响应式的,当state中的数据发生改变时, Vue组件会自动更新.

这就要求我们必须遵守一些Vuex对应的规则:

提前在store中初始化好所需的属性.

当给state中的对象添加新属性时,使用下面的方式:

➢方式一: 使用Vue.set(obj, ‘newProp’, 123)

➢方式二:用新对象给旧对象重新赋值

Vuex实现了一个单向数据流,在全局拥有一个State存放数据,所有修改State的操作必须通过Mutation进行,Mutation的同时提供了订阅者模式供外部插件调用获取State数据的更新。所有异步接口需要走Action,常见于调用后端接口异步获取更新数据,而Action也是无法直接修改State的,还是需要通过Mutation来修改State的数据。最后,根据State的变化,渲染到视图上。Vuex运行依赖Vue内部数据

1、$store.state

通过这个方式,能直接使用state里的数据。

点击按钮发现,我们无法更改$store.state.counter

2、mutations

要想修改state的数据必须通过mutations

三、Vuex核心概念

Vuex有几个比较核心的概念:

State

Getters

Mutation

Action

Module

1、state

Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源 (SSOT)”而存在。这也意味着,每个应用将仅仅包含一个 store 实例。

单一状态树能够让我们最直接的方式找到某个状态的片段,而且在之后的维护和调试过程中,也可以非常方便的管理和维护,存储在 Vuex 中的数据和 Vue 实例中的 data 遵循相同的规则。

2、vuex-getters的使用:

其实可以当成组件共享的计算属性

例:写一个对象数组,找出里面age>20的对象

1)普通写法:这种写法只能在需要的每个组件里都写上这个计算属性

2)写在getters里面 每个组件都可以直接使用:

 其他组件也可以获取到



在getters的方法里也可以将getters作为参数,调用getters里的其他方法:

3、Mutation状态更新:

state里的数据改变只能通过Mutation!(上面已经解释,这里不做赘述)

我们来看Mutation中方法参数传递:

mutation的提交风格:

之前的commit只是一种普通的提交风格Vue还提供了另外一种风格,它是一个包含type属性的对象

双向绑定机制,需要new一个Vue对象来实现“响应式化”,所以Vuex是一个专门为Vue.js设计的状态管理库。

vue-mutations的类型常量定义步骤

可以在store里加一个js文件:

6、vuex-actions的使用:

mutation里的所有代码都不能有异步操作:

如果有异步操作,就用actions来替代Mutations

但是actions也不能直接修改state里的数据,

如果有一个异步操作需要修改state里的数据,那么正确的方法应该是:index.js:


commit是提交mutatious的同步操作,

dispatch是分发actions的异步操作

dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch(‘action方法名’,值)

点击触发方法,通过dispatch("aUpdateInfo")来触发actions里面的方法 aUpdateInfo ,方法内通过commit来触发mutation里面的方法,更新state里面的数据

context后面也可以接一个传递参数payload:

但是通常携带的信息不只一个的时候怎么办呢:可以将payload作为一个对象:

更简洁优雅的写法:Promise:

7、vuex-modules的使用:

Vue使用单-状态树,那么也意味着很多状态都会交给Vuex来管理.当应用变得非常复杂时,store对象就有可能变得相当臃肿,为了解决这个问题,Vuex允许我们将store分割成模块(Module),而每个模块拥有自己的state. mutations、actions, getters等

1)modules的state:

这里只能用$store.state.a.name而不是modules.a

因为在Devtools里可以看到 a会自动变成state的一个对象:


2)modules的mutation:

3)modules的getters:

论是定义在store里的getters还是定义在modules里的getters 调用的方法都相同:

我们都知道getters里的方法可以将本身getters作为参数来调用里面的其他函数:

而且,在modules中的getters还可以将store里的state作为参数:

4)modules的actions:

和store几乎一样,只不过调用方式不一样罢了

相关文章

  • Vuex最详细教学

    一、Vuex单界面到多界面状态管理切换: 1.安装配置vuex,版本依赖 vue2的项目使用vuex3,vue3的...

  • vuex入门详解

    vuex最简单、最详细的入门文档 vuex最简单、最详细的入门文档 如果你在使用 vue.js , 那么我想你可能...

  • vuex入门

    vuex最简单、最详细的入门文档

  • Vue学习笔记

    0.参考文档 理解vuex -- vue的状态管理模式 vuex最简单、最详细的入门文档 vue+webpack项...

  • 最详细的VUE教程

    最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解...

  • 最详细的Vuex教程

    姓名:岳沁 学号:17101223458 转载自:http://blog.csdn.net/h5_queensty...

  • 4.Vuex

    vuex官网 现在将 vuex 整合到我们的 vue-complex 应用中 有关于vuex的详细介绍 ,可以看看...

  • vuex详细操作

    只讲操作,不谈原理,适合工作用,不适合面试 一个最基本的vuex可以由一个js文件来实现,也是我们使用脚手架初始化...

  • Vuex 详细操作

    前言 上一章,讲解了 vuex 的入门,主要阐述了 state、getters、mutations、actions...

  • vuex最详细完整的使用用法

    为什么使用vuex? vuex主要是是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值(兄弟组件下又有父...

网友评论

    本文标题:Vuex最详细教学

    本文链接:https://www.haomeiwen.com/subject/xkvxmrtx.html