mapGetters辅助函数仅仅是将 store 中的 getter 映射到局部计算属性,在组件或界面中不使用mapGetter调用映射vuex中的getter,在组件或界面中使用mapGetter调用映射vuex中的getter

mapGetters辅助函数

mapGetters辅助函数仅仅是将 store 中的 getter 映射到局部计算属性:

1、在组件中不使用mapGetter函数钩子的方式

1.1 调用映射根部store中的getter

关键词:
this.$store
<!-- test.vue -->
<template><div class="vuexReponse"><div @click="changeVal">点击</div><div>"stateHello: "{{stateHello}}</div><div>"gettersHello: "{{gettersHello}}</div></div>
</template>
<script>
export default {watch: {gettersHello(newVal, oldVal) {console.log("gettersHello newVal", newVal);console.log("gettersHello oldVal", oldVal);}},computed: {stateHello() {return this.$store.state.stateHello},gettersHello() {return this.$store.getters.gettersHello}},methods: {changeVal() {this.$store.commit("mutationsHello", 2)}}
}
</script>
/*** store.js*/
import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)
export default new Vuex.Store({state: {stateHello: 1},getters: {gettersHello: (state) => {return state.stateHello * 2}},mutations: {mutationsHello(state, val) {console.log("val", val); // 2state.stateHello += val}},
})

流程:

在test.vue 界面中点击调用changeVal(), changeVal方法通过commite 传参val 并调用 store.js中的mutationsHello() 方法,mutationsHello方法修改state中的stateHello的值,在getters 的 gettersHello 中监听stateHello的值,stateHello的值的改变触发了gettersHello,在test.vue界面computed 中计算了 store.getters.gettersHello ,这个就将gettersHello 映射到 store.gettes.gettersHello 的值,通过模板 将gettersHello 渲染到dom中,同时由于gettersHello 的改变也能触发watch中gettersHello,实现对store.getters.gettersHello 数据改变的监听

1.2 调用映射modules模块store中的getter函数

<!-- moduleTest.vue -->
<template><div class="vuexReponse"><div @click="changeVal">点击</div><div>stateHello: {{stateHello}}</div><div>gettersHello: {{gettersHello}}</div></div>
</template><script>
export default {watch: {gettersHello(newVal, oldVal) {console.log("gettersHello newVal", newVal);console.log("gettersHello oldVal", oldVal);}},computed: {stateHello() {return this.$store.state.vuexTest.stateHello},gettersHello() {return this.$store.getters['vuexTest/gettersHello']}},methods: {changeVal() {this.$store.commit("vuexTest/mutationsHello", 2)}}
}
</script>
/*** 模块 vuexTest.js*/
export default {namespaced: true,state: {stateHello: 1,},getters: {gettersHello: (state, getters, rootState, rootGetters) => {console.log("state", state);console.log("getters", getters);console.log("rootState", rootState);console.log("rootGetters", rootGetters);return state.stateHello * 2}},mutations: {mutationsHello(state, val) {console.log("1111");console.log("val", val);state.stateHello += val}},actions: {}
}

需要注意的地方是在 computed 中计算映射 模块中的getters 的方法时 调用方式与 获取模块中的state 中的数据不同

this.$store.getters['vuexTest/gettersHello']

2、在组件使用mapGetter钩子调用vuex中的getter函数

2.1 调用映射根部store中的getter

/*** store.js*/import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({state: {stateHello: 1},getters: {gettersHello: (state) => {return state.stateHello * 2}},mutations: {mutationsHello(state, val) {state.stateHello += val}},})
<!-- Test.vue -->
<template><div class="vuexReponse"><div @click="changeVal">点击</div><div>stateHello: {{stateHello}}</div><div>gettersHello: {{gettersHello}}</div><div>gettersHelloOther {{gettersHelloOther}}</div></div>
</template><script>
import { mapGetters } from "vuex";
export default {name: "vuexReponse",components: {},data() {return {}},watch: {gettersHello(newVal, oldVal) {console.log("gettersHello newVal", newVal);console.log("gettersHello oldVal", oldVal);}},computed: {stateHello() {return this.$store.state.stateHello},...mapGetters(["gettersHello"]), // 数组形式...mapGetters({   // 对象形式 gettersHello: "gettersHello"}),...mapGetters({gettersHelloOther: "gettersHello" // 对象形式下 改变映射}),},methods: {changeVal() {this.$store.commit("mutationsHello", 2)}}
}
</script>

2.2 调用映射根部store中的getter

/*** vuexTest.js*/export default {namespaced: true,state: {stateHello: 1,},getters: {gettersHello: (state, getters, rootState, rootGetters) => {console.log("state", state);console.log("getters", getters);console.log("rootState", rootState);console.log("rootGetters", rootGetters);return state.stateHello * 2}},mutations: {mutationsHello(state, val) {console.log("1111");console.log("val", val);state.stateHello += val}},actions: {}
}
<!-- module test.vue -->
<template><div class="vuexReponse"><div @click="changeVal">点击</div><div>stateHello: {{stateHello}}</div><div>gettersHello: {{gettersHello}}</div><div>gettersHelloOther {{gettersHelloOther}}</div></div>
</template><script>
import { mapGetters } from "vuex";
export default {name: "vuexReponse",watch: {gettersHello(newVal, oldVal) {console.log("gettersHello newVal", newVal);console.log("gettersHello oldVal", oldVal);}},computed: {stateHello() {return this.$store.state.vuexTest.stateHello},...mapGetters(["vuexTest/gettersHello"]), // 数组形式...mapGetters("vuexTest", {   // 对象形式 gettersHello: "gettersHello"}),...mapGetters("vuexTest", {gettersHelloOther: "gettersHello" // 对象形式下 改变映射}),},methods: {changeVal() {this.$store.commit("vuexTest/mutationsHello", 2)}}
}
</script>
这三种形式...mapGetters(["vuexTest/gettersHello"]), // 数组形式...mapGetters("vuexTest", {   // 对象形式 gettersHello: "gettersHello"}),...mapGetters("vuexTest", {gettersHelloOther: "gettersHello" // 对象形式下 改变映射}),

vuex 辅助函数mapGetters基本用法相关推荐

  1. Vue进阶(幺肆捌):Vuex 辅助函数详解

    文章目录 一.前言 二.辅助函数 三.如何使用辅助函数 四.辅助函数如何去映射 vuex.store 中的属性 4.1 mapState: 把 state 属性映射到 computed 身上 4.2 ...

  2. Vuex中mutations的用法

    Vuex中mutations的用法 在 Vuex 中 store 数据改变的唯一方法就是提交 mutations.mutations里面装着一些改变数据方法的集合,这是Vuex 设计很重要的一点,就是 ...

  3. vuex使用mapgetters

    vuex使用mapgetters 首先使用vuex 首先使用vuex 这是index.js文件 import {createStore} from 'vuex' import getters from ...

  4. vuex中mapGetters

    vuex为了更快捷解决组件之间相互传值问题    不划分模块 结构目录 index.js: import Vue from 'vue' import Vuex from 'vuex' import r ...

  5. vue——vuex mapState,mapGetters,mapMutations,mapActions

    当多次获取state中的数据时会出现大量的 $store.state.属性名 造成代码的冗余同时也很麻烦.就可使用 mapState(引用时使用的名称,'state中的属性名') 或 mapState ...

  6. vuex辅助函数和vuex5个属性

    在上篇中,我们可以知道如果想要访问vuex.store中state中的数据,需要this.$store.state.属性名.显然这样访问数据写的代码很很不简洁的,辅助函数就是用来解决这个问题的. 1. ...

  7. vuex概念之Getter用法详解

    Vuex 允许我们在 store 中定义"getter"(可以认为是 store 的计算属性).就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值 ...

  8. vuex当中mapGetters使用

    <template><div id="app">{{count}}{{name}}<button @click="changeNameFun ...

  9. vuex中mapGetters,mapActions使用

    vuex运行流程图如下 1.Vue Components 是我们的 vue 组件,组件会触发(dispatch)一些事件或动作,也就是图中的 Actions 2.我们在组件中发出的动作,肯定是想获取或 ...

最新文章

  1. 一文回顾深度学习十年发展
  2. mysql load报错_mysql:执行LOAD DATA LOCAL 报错
  3. 机房工程施工细节标准做法,每张图都有说明
  4. Keras .ImageDataGenerator图像增强用法大全以及如何和模型结合起来(有代码)
  5. 2021HDU多校第五场1004 Another String-双指针
  6. Myecplise Tomcat 启动很慢
  7. Report Style
  8. CListCtrl 使用技巧 1
  9. 使用Scipy进行函数优化
  10. Solidity教程
  11. 网页设计中文标题h1~h4应用技巧
  12. zigbee 4:协调器/路由器/终端 建立/加入 网络
  13. word设置表格文字紧贴下框线
  14. python生成随机字符串包含数字字母_使用python生成一个指定长度的字符串(随机密码),要求包括数字、字母、特殊符号(string库解析)...
  15. OV7725鹰眼摄像头
  16. 第527篇-Prism学习系列3_Modularity
  17. 博弈论系列—海盗分金币
  18. 数据结构和算法——kd树
  19. c语言规定 程序中各函数之间().,C语言基础笔试题
  20. Cmd批处理替换文件

热门文章

  1. 【秃头系列】-【本科生毕设论文格式Word】自动生成图表公式题注并交叉引用
  2. C# 控制字符串中某字符的颜色
  3. 7-4 电话键盘字母数字转换 (20 分) PTA JAVA
  4. android10续航,全天候在线无负担,中兴天机10 Pro续航测试
  5. GitHub分享阿波罗登月计划所用计算机开源项目
  6. java毕业设计毕业生就业信息管理系统Mybatis+系统+数据库+调试部署
  7. 【懒人台灯】泰凌微 开发小试牛刀
  8. java瀑布流_一个简单的瀑布流实现。
  9. 如何让玩家更有“代入感”? 《极乐迪斯科》叙事分析
  10. 不知道PDF怎么批量转Word?PDF批量转Word软件分享