vuex 辅助函数mapGetters基本用法
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基本用法相关推荐
- Vue进阶(幺肆捌):Vuex 辅助函数详解
文章目录 一.前言 二.辅助函数 三.如何使用辅助函数 四.辅助函数如何去映射 vuex.store 中的属性 4.1 mapState: 把 state 属性映射到 computed 身上 4.2 ...
- Vuex中mutations的用法
Vuex中mutations的用法 在 Vuex 中 store 数据改变的唯一方法就是提交 mutations.mutations里面装着一些改变数据方法的集合,这是Vuex 设计很重要的一点,就是 ...
- vuex使用mapgetters
vuex使用mapgetters 首先使用vuex 首先使用vuex 这是index.js文件 import {createStore} from 'vuex' import getters from ...
- vuex中mapGetters
vuex为了更快捷解决组件之间相互传值问题 不划分模块 结构目录 index.js: import Vue from 'vue' import Vuex from 'vuex' import r ...
- vue——vuex mapState,mapGetters,mapMutations,mapActions
当多次获取state中的数据时会出现大量的 $store.state.属性名 造成代码的冗余同时也很麻烦.就可使用 mapState(引用时使用的名称,'state中的属性名') 或 mapState ...
- vuex辅助函数和vuex5个属性
在上篇中,我们可以知道如果想要访问vuex.store中state中的数据,需要this.$store.state.属性名.显然这样访问数据写的代码很很不简洁的,辅助函数就是用来解决这个问题的. 1. ...
- vuex概念之Getter用法详解
Vuex 允许我们在 store 中定义"getter"(可以认为是 store 的计算属性).就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值 ...
- vuex当中mapGetters使用
<template><div id="app">{{count}}{{name}}<button @click="changeNameFun ...
- vuex中mapGetters,mapActions使用
vuex运行流程图如下 1.Vue Components 是我们的 vue 组件,组件会触发(dispatch)一些事件或动作,也就是图中的 Actions 2.我们在组件中发出的动作,肯定是想获取或 ...
最新文章
- 一文回顾深度学习十年发展
- mysql load报错_mysql:执行LOAD DATA LOCAL 报错
- 机房工程施工细节标准做法,每张图都有说明
- Keras .ImageDataGenerator图像增强用法大全以及如何和模型结合起来(有代码)
- 2021HDU多校第五场1004 Another String-双指针
- Myecplise Tomcat 启动很慢
- Report Style
- CListCtrl 使用技巧 1
- 使用Scipy进行函数优化
- Solidity教程
- 网页设计中文标题h1~h4应用技巧
- zigbee 4:协调器/路由器/终端 建立/加入 网络
- word设置表格文字紧贴下框线
- python生成随机字符串包含数字字母_使用python生成一个指定长度的字符串(随机密码),要求包括数字、字母、特殊符号(string库解析)...
- OV7725鹰眼摄像头
- 第527篇-Prism学习系列3_Modularity
- 博弈论系列—海盗分金币
- 数据结构和算法——kd树
- c语言规定 程序中各函数之间().,C语言基础笔试题
- Cmd批处理替换文件
热门文章
- 【秃头系列】-【本科生毕设论文格式Word】自动生成图表公式题注并交叉引用
- C# 控制字符串中某字符的颜色
- 7-4 电话键盘字母数字转换 (20 分) PTA JAVA
- android10续航,全天候在线无负担,中兴天机10 Pro续航测试
- GitHub分享阿波罗登月计划所用计算机开源项目
- java毕业设计毕业生就业信息管理系统Mybatis+系统+数据库+调试部署
- 【懒人台灯】泰凌微 开发小试牛刀
- java瀑布流_一个简单的瀑布流实现。
- 如何让玩家更有“代入感”? 《极乐迪斯科》叙事分析
- 不知道PDF怎么批量转Word?PDF批量转Word软件分享