vue2知识点:理解vuex、安装vuex、搭建vuex环境

简介: vue2知识点:理解vuex、安装vuex、搭建vuex环境

image.png

@[toc]
image.png
image.png
image.png
image.png
image.png

8.1理解 vuex

8.1.1vuex 是什么

  1. 概念:专门在 Vue 中实现集中式状态(数据)管理的一个 Vue 插件,对 vue 应
    用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方
    式,且适用于任意组件间通信。

  2. Github 地址: https://github.com/vuejs/vuex

注意点1:浏览器安装的Vue插件,实际是vue+vuex的插件。
## 8.1.2什么时候使用 Vuex
1. 多个组件依赖于同一状态
2. 来自不同组件的行为需要变更同一状态

## 8.1.3全局事件总线和vuex的区别
全局事件总线查询和修改共享数据,需要使用多次\$emit+\$on,非常不方便。
而vuex则是把共享数据单独提出来放在vuex中,通过双向箭头也就是提供的api就能实现查询和修改数据。
image.png
image.png

## 8.1.5vuex的工作原理图
image.png

### 举例:讲解原理图,以求和案例的下拉框选择2,点击+后的变化流程讲解

> 求和案例页面效果长这样

image.png



image.png

注意点1:vuex有3个组成部分: Actions、Mutations、State,且都是{}对象。
其中
Actions代表一堆动作或者一堆行为
Mutations代表一堆加工或者一堆维护
State代表状态,状态就等同于数据。
我们常说把数据交给vuex管理,实际是交给vuex的state对象去管理。

注意点2:

问题:有没有一种感觉Actions有点多余,它也不干啥直接把处理转给Mutations做处理?

答案:Actions不多余,如果dispatch只传递行为而没传递值的情况下,Actions可以请求Backend API(ajax调后端接口返回值)再去拼接完成请求行为表达式。举例dispatch(‘jia’) => 调用Backend API返回2 => 拼接成dispatch(‘jia’, 2)传递给commit

注意点3:针对注意点2如果在传入Actions之前,我已经知道行为和参数值,那么可以省略Actions这条线步骤,直接实现从Vue Components -> Mutations

注意点4:这个图有1个隐藏点没标出来,就是Actions、Mutations、State都得由一个叫store的人去管理他们三个才行。大白话讲这3个对象都准备好都是不能直接使用的,必须由一个叫store的去管理他们后,才能正常使用。

注意点5:这个dispatch方法和commit方法不是由window提供的,而是由store提供的。

注意点6:要想让所有组件都能使用dispatch方法和commit方法,那么你得让所有vc都能认识store才行。

注意点7:举例案例描述下整体执行流程:初始化state对象中num:0 =》 绿色框组件下拉框选择2并点击+号按钮后 =》 调dispatch的api函数,需传入两个参数,参数1为动作类型,参数2为值,即dispatch(‘jia’, 2) =》 jia的动作和值就来到了黄色框Actions对象中,会引起Actions对象中key为jia的函数调用,jia函数内部自己去触发commit去调用 =》 提交commit(‘jia’, 2)后就进入红色框Mutations里了 =》 Mutations里肯定也存在个key为jia 的函数,这个函数会拿到两个东西,第1个东西为state,第2个东西为你传过来的2 =》走Mutate这条线,进行加工修改的意思 =》 对紫色框state保存的sum值进行修改 =》走Render这条线,vuex会帮你重新解析绿色框组件并渲染 =》于是乎发现页面中sum就变成修改后的值了。
用大白话举例再讲解下上方的图,其中绿色框为客人,黄色框为服务员,红色框为后厨团队,紫色框为你吃到这口菜,然后客人进门了张嘴说话就是dispatch的api调用,说我要一份蛋炒饭,然后黄色框服务员就用点餐宝就是commit去点餐,交给红色框后厨团队,然后后厨团队把菜加工做好传递给绿色框客人使用。

注意点8:Devtools为vux官方提供的开发者调试工具,它跟Mutations进行对话。

注意点9:Actions有一系列方法,不只有commit方法。
# 8.2安装vuex

> 命令:npm i vuex@3

注意:
image.png

# 8.3搭建vuex环境
注意点0:
项目使用vuex,只需建立store文件夹,再新建文件叫index.js即可

注意点1:

问题:如下如图1代码执行报错如图2,感觉是说加载顺序不对,报错显示创建实例之前先使用Vue.use(Vuex),然后改成如图3的代码,发现还是报相同错。

答案:报错跟脚手架加载import的顺序有关,详情请看注意点2。解决方案就是把引入vuex和引入store和使用Vue.use(Vuex)全部放在index.js文件中,这样就能确保加载顺序一致。
image.png

图1

image.png

图2

image.png

图3

注意点2:注意inport的扫描顺序,会影响加载或打印顺序
比如:图1加载打印顺序,其中test1和test2都是简单打印语句,按理说执行顺序打印应该顺序打印,而实际结果如图2,先打印import的再会去打印console的100,200

问题:为啥加载顺序不按照顺序加载?

答案:在vue-cli脚手架使用import的时候,不管import之间有多少代码,它会扫描整个import语句,然后按照编写代码顺序全都汇总到最上方,也就是表面代码写成图1,实际执行的代码如图3。
image.png

图1

image.png

图2

image.png

图3

注意点3:
new实例的时候可以使用简写方式

完整方式:

export default new Vuex.Store({
   
    actions: actions,
    mutations: mutations,
    state: state,
})

简写方式:

export default new Vuex.Store({
   
    actions,
    mutations,
    state,
})

完整代码

main.js

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//引入插件
import vueResource from 'vue-resource'
//引入store
import store from './store'

//关闭Vue的生产提示
Vue.config.productionTip = false
//使用插件
Vue.use(vueResource)

//创建vm
new Vue({
   
    el:'#app',
    render: h => h(App),
    store,
    beforeCreate() {
   
        Vue.prototype.$bus = this
    }
})

index.js

//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用Vuex插件
Vue.use(Vuex)

//准备actions——用于响应组件中的动作
const actions = {
   }
//准备mutations——用于操作数据(state)
const mutations = {
   }
//准备state——用于存储数据
const state = {
   }

//创建并暴露store
export default new Vuex.Store({
   
    actions,
    mutations,
    state,
})

本人其他相关文章链接

1.《进阶篇第8章:vuex》包括理解vuex、安装vuex、搭建vuex环境、四个map方法的使用、模块化+名命空间
2.vue2知识点:理解vuex、安装vuex、搭建vuex环境
3.vue2知识点:vuex中四个map方法的使用
4.vue2知识点:模块化+名命空间

目录
相关文章
|
SQL 关系型数据库 MySQL
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
490 0
|
前端开发
node express 给前端返回图片流
node express 给前端返回图片流
node express 给前端返回图片流
|
6月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
534 30
|
JavaScript
Vue3基础(24)___vue3中使用vuex
本文介绍了在Vue 3中如何使用Vuex进行状态管理,包括安装Vuex、创建store、定义state、mutations、actions、getters,以及在组件中使用这些选项。同时,还介绍了如何通过`$store`在组件内部访问和修改状态,以及如何使用命名空间对模块进行隔离。
413 3
|
11月前
|
Linux 网络安全 Android开发
高级 ping 命令及技巧
Ping命令是一种常用的网络诊断工具,用于测试网络连接的可达性和延迟等信息
1090 57
|
12月前
|
Java
vue2知识点:vuex中四个map方法的使用,包括:mapState、mapGetters、mapMutations、mapActions
vue2知识点:vuex中四个map方法的使用,包括:mapState、mapGetters、mapMutations、mapActions
723 1
|
Prometheus 运维 监控
解锁分布式云多集群统一监控的云上最佳实践
为应对分布式云多集群监控的挑战,阿里云可观测监控 Prometheus 版结合 ACK One,凭借高效纳管与全局监控方案有效破解了用户在该场景的监控运维痛点,为日益增长的业务需求提供了一站式、高效、统一的监控解决方案,实现成本与运维效率的双重优化。助力企业的数字化转型与业务快速增长,在复杂多变的云原生时代中航行,提供了一个强有力的罗盘与风帆。
56424 130
|
12月前
|
搜索推荐 API 数据安全/隐私保护
探讨淘宝商品 API 接口:运用及收益
淘宝商品API接口为开发者和企业提供了一种强大的工具,能够高效获取和利用淘宝平台上的商品数据,涵盖名称、价格、描述、图片等。该接口具有丰富的数据资源、实时性、灵活性和高安全性,广泛应用于电商平台建设、价格比较、数据分析和移动应用开发等领域,为企业带来提高效率、降低成本、增加收入和提升用户体验等多方面收益。
194 4
|
11月前
|
机器学习/深度学习 搜索推荐 大数据
大数据与教育:学生表现分析的工具
【10月更文挑战第31天】在数字化时代,大数据成为改善教育质量的重要工具。本文探讨了大数据在学生表现分析中的应用,介绍学习管理系统、智能评估系统、情感分析技术和学习路径优化等工具,帮助教育者更好地理解学生需求,制定个性化教学策略,提升教学效果。尽管面临数据隐私等挑战,大数据仍为教育创新带来巨大机遇。
|
JavaScript 前端开发