Ⅰ、Vuex 简介:

1、Vuex 是什么?

答:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式;
而所谓状态就是指:组件中所维护的数据);
(简而言之:就是状态管理,解决复杂组件数据通信,状态共享;)

2、Vuex 的图例讲解:

其一、对 Vue Components 的理解:
Vue Components 是指:一个组件(如:compA.vue);

其二、对 State 的理解:
State 是指:存放数据的(数据最终是展示(render)在组件的模板(视图)中);

其三、对 Mutations 的理解:
Mutations 是指:用来存放修改方法的(且是同步的);
Vue Components 可以通过 commit修改 Mutations

其四、对 Actions 的理解:
Actions 是指:用来放异步操作的(如:ajax 请求);
Vue Components 可以通过 dispatch 派发 Action 的异步请求;
同时: Action 可以直接获取接口: Backend API, 或通过 Commit 来修改 Mutations 从而修改 State 数据;

3、Vuex 的配置过程:

其一、选择并下载 Vuex 版本的过程中:
注意:Vue2 是与 Vuex3相匹配的,而 Vue3 是与 Vuex4 相匹配的;

其二、打开终端并输入命令:
npm i vuex@3

Ⅱ、如何引入并使用 Vuex :

1、用 vue-cli 创建项目;

2、在 src 下建一个 store 文件夹并创建 index.js 文件;

其一、建成的文件夹如下所示:

其二、index.js 里面引入的 vuex 的代码为:

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)  // 注意:一定要用 Vue.use() 注册一下;const store = new Vuex.Store({   /* 此时的 Vuex.Store 就是一个构造函数(即:相当于一个实例); */// 定义状态的地方;state: {num: 1,school: {name: 'xuexiqianduan',age: 26}},// 基于现有的状态(state)来产生新的数据(即:产生新的 state )就用 getters 方法,此时的 getters 就类似于我们的计算属性;//此时只要调用 getters 中的 subName 方法,就默认将 state 中 school 对象的 name 属性值进行 substr(5) 操作;getters: {subName(state) {return state.school.name.substr(5)  /* 因为:此时 school 的 name 属性值是字符串 'xuexiqianduan' */}},
})
export default store
// 此时是导出 store 文件,便于挂载;

3、要在 main.js 文件中挂载一下:

import Vue from 'vue'
import App from './App.vue'
import store from './store'Vue.config.productionTip = falsenew Vue({store, /* 挂载到实例完成后,在 vue 项目的任何地方就都可以使用 store */render: h => h(App),
}).$mount('#app')

4、然后在 App.vue 中使用;

Ⅲ、实例剖析在 App.vue 中使用 getters 的过程:

1、方式一:通过 $store.getters.subName 拿到数据;

其一、 此时的 App.vue 的代码为:

<template><div id="app"><h1>真实用法:Vuex中Getters的使用</h1><p>获得 school 截取后 name 值的方式一: {{ $store.getters.subName }}</p></div>
</template>
<script>
export default {}
</script>
<style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

其二、页面的展示效果为:

其三、而此时 index.jsstateschool 对象的 name 属性 的值为:
(即:已成功拿到了 index.jsstateschool 对象截取后 name 属性 的值;)

A、stateschool 对象的 name 属性 的值为:

B、获得 stateschool 对象截取后的 name 属性 的值为:

2、方式二:通过 {{ subName }} 拿到数据;

其一、 此时的 App.vue 的代码为:

<template><div id="app"><h1>真实用法:Vuex中Getters的使用</h1><p>获得 school 截取后 name 值的方式二: {{ subName }}</p></div>
</template>
<script>
export default {computed: {subName() {return this.$store.getters.subName;},}
}
</script>
<style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

其二、页面的展示效果为:

其三、而此时 index.jsstateschool 对象的 name 属性 的值为:
(即:已成功拿到了 index.jsstateschool 对象截取后 name 属性 的值;)

A、stateschool 对象的 name 属性 的值为:

B、获得 stateschool 对象截取后的 name 属性 的值为:

3、方式三:通过 {{ subName }} 拿到数据;

其一、 此时的 App.vue 的代码为:

<template><div id="app"><h1>真实用法:Vuex中Getters的使用</h1><p>获得 school 截取后 name 值的方式三: {{ subName }}</p></div>
</template>
<script>
import {mapGetters} from 'vuex'
export default {computed: {computed: {...mapGetters(['subName'])// 该函数内部运行的返回值大致为:{subName: () => this.$store.state.subName}}}
}
</script>
<style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

其二、页面的展示效果为:

其三、而此时 index.jsstateschool 对象的 name 属性 的值为:
(即:已成功拿到了 index.jsstateschool 对象截取后 name 属性 的值;)

A、stateschool 对象的 name 属性 的值为:

B、获得 stateschool 对象截取后的 name 属性 的值为:

Ⅳ、小结:

其一、哪里有不对或不合适的地方,还请大佬们多多指点和交流!
其二、有兴趣的话,可以多多关注这个专栏(Vue(Vue2+Vue3)面试必备专栏):https://blog.csdn.net/weixin_43405300/category_11525646.html?spm=1001.2014.3001.5482

Vuex 之二:3种拿到 state 中数据并执行 getters 中方法的过程与实例剖析相关推荐

  1. matlab体素化,一种三维激光点云数据快速体素化处理方法与流程

    本发明涉及一种三维激光点云数据快速体素化处理方法. 背景技术: 目前,三维激光扫描系统快速发展,由于研究的需要,往往需要把不具有空间长度信息的点数据转为具有三维空间信息的立方体,如何使用软件进行快速. ...

  2. Vuex 之一:3种拿到 state 中数据的方式与实例剖析

    Ⅰ.Vuex 简介: 1.Vuex 是什么? 答:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式: 而所谓状态就是指:组件中所维护的数据); (简而言之:就是状态管理,解决复杂组件数据 ...

  3. oracle删除表中数据_Excel工作表中,删除重复数据的2种方法解读,高效且实用!...

    在实际的工作中,经常要对工作表中重复的数据进行删除,如若数据行只有几条,则可通过人工查找出来,如若数据行较多,这种方法就费时费力,而且容易出错,造成对表格数据的准确性和个人能力的怀疑--今天,小编给大 ...

  4. 一种基于多维时序数据预测综合判定的方法(内存告警)

    很多情境下,我们都会遇到收集的多维度的时序性的数据,比如运维中的主机各项指标数据,网页中的各项埋点数据等等.通常情况下通过某一指标上的时序预测结果与真实值的比较来判断这一指标是否稳定,这个常用方法的缺 ...

  5. 三种查看SqlServer中数据物理pge页的方法

    1.根据数据记录查看当前记录所在的文件编号.page页.以及在页中的插槽. 示例如下: SELECT top 10 %%physloc%%, sys.fn_physlocFormatter (%%ph ...

  6. (二)Easyexcel 的使用(读取数据到map集合中)

    前面讲述了使用实体类的方式绑定excel表头的方式进行读取和写入操作,是比较简单的,那么由于表头可能会变,那么就不能使用绑定实体类的方式进行了,于是搜索百度一番,借鉴别人的博客,使用map集合的方式进 ...

  7. 同步压缩变换 matlab,一种基于同步压缩变换重构的幅值校正方法

    一种基于同步压缩变换重构的幅值校正方法 [技术领域] [0001] 本发明属于信号处理技术领域,具体设及一种基于同步压缩变换重构的幅值校正 方法. [背景技术] [0002] 时频分析方法是处理非平稳 ...

  8. 二十三种设计模式简介及类图(转载)

    该文章转载于:https://www.cnblogs.com/pony1223/p/7608955.html 一.设计模式的三个分类 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程. ...

  9. Java 二十三种设计模式

    一.单例模式 定义 Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有 ...

最新文章

  1. 在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
  2. mybatis查询缓存——(十三)
  3. 从实验现象详细分析BGP的路由策略与选路原则
  4. 操作系统中死锁避免算法 --- 银行家算法
  5. 合并两个链表数据结构c语言,合并两个链表.
  6. 美国AI公司宣称特制3D面具破解刷脸支付系统,支付宝、微信:能破解 我全赔...
  7. iscsi:IO操作流程(四)
  8. MAX187_量程0-2.5伏电压表_软件滤波
  9. 375. 猜数字大小 II leetcode java
  10. 恒温箱温度计算机控制系统仿真,实验用恒温箱控制系统设计及其模型建立
  11. 隔离升压电源模块24V功率可达40W宽电压输入高电压稳压输出
  12. Nebula Graph - 集群模式部署
  13. asp.net实现动态显示当前日期时间
  14. 测试小牛,全新出发!!
  15. 汽车之家和易车该如何走下去?
  16. 大数据是什么意思?就业前景如何?
  17. H7-TOOL脱机烧录器支持1拖4,支持新唐,GD32,MM32,AT32,APM32,CX32,STM32,STM8,i.MX RT,W7500,外置Flash等2020-10-27
  18. Excel数据透视表、数据透视图
  19. android bp文件_理解Android.bp
  20. 几种抠象技术理论试验-1 (Luma-Key,Chroma-Key)

热门文章

  1. 健身耳机哪些品牌好?健身运动耳机推荐
  2. 删除hdfs上的内容报错:rm: Cannot delete /wxcm/ Name node is in safe mode.
  3. Bagging和Boosting 策略及其区别
  4. 五 我们经常会忘记,要学会 走路 才能 奔跑,Python基础教程
  5. 极坐标梯度公式_一种基于极坐标系梯度变化的类圆环边缘检测方法与流程
  6. U盘无法格式化(提示U盘文件系统变为了RAW格式)【一般应用】
  7. python3模拟登录知乎
  8. vue页面换成手机适配屏幕
  9. 密码主页jQuery插件的应用(注册时的验证)
  10. 又一个充电宝改装,经验升级版。