vue中的mapgetter优势(vuex 中辅助函数mapGetters的基本用法详解)
类别:编程学习 浏览量:2067
时间:2021-10-12 00:52:27 vue中的mapgetter优势
vuex 中辅助函数mapGetters的基本用法详解mapGetters
辅助函数
mapGetters
辅助函数仅仅是将 store 中的 getter 映射到局部计算属性:
1.1 调用映射根部store中的getter
<!-- test.vue --> <template> <li class="vuexReponse"> <li @click="changeVal">点击</li> <li>"stateHello: "{{stateHello}}</li> <li>"gettersHello: "{{gettersHello}}</li> </li> </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); // 2 state.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> <li class="vuexReponse"> <li @click="changeVal">点击</li> <li>stateHello: {{stateHello}}</li> <li>gettersHello: {{gettersHello}}</li> </li> </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.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> <li class="vuexReponse"> <li @click="changeVal">点击</li> <li>stateHello: {{stateHello}}</li> <li>gettersHello: {{gettersHello}}</li> <li>gettersHelloOther {{gettersHelloOther}}</li> </li> </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> <li class="vuexReponse"> <li @click="changeVal">点击</li> <li>stateHello: {{stateHello}}</li> <li>gettersHello: {{gettersHello}}</li> <li>gettersHelloOther {{gettersHelloOther}}</li> </li> </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的基本用法详解的文章就介绍到这了,更多相关vuex mapGetters使用内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
标签:vuex mapGetters
您可能感兴趣
- vuex存取修改数据流程(vuex数据持久化的两种实现方案)
- vuex怎么使用数据(vuex的辅助函数该如何使用)
- vue-cli请求数据的方式(vue-cli配置使用Vuex的全过程记录)
- vue编程加入购物车(vuex实现简单的购物车功能)
- vuex-table行列转换效果(vue3+el-table实现行列转换)
- vuex数据持续化(Vuex数据持久化实现的思路与代码)
- vuex中action的值怎么接(vuex中Getter的用法详解)
- vue3.0零基础入门(快速掌握Vue3.0中如何上手Vuex状态管理)
- vuex原理及使用方法(Vuex状态机的快速了解与实例应用)
- vue中的mapgetter优势(vuex 中辅助函数mapGetters的基本用法详解)
- 你或许不知道你隐藏的支配欲望(你或许不知道你隐藏的支配欲望)
- 把宽体丰田86卖了,换成7.5代高尔夫GTI玩起姿态与性能并存的改装(把宽体丰田86卖了)
- 大众推出了第五代高尔夫GT(大众推出了第五代高尔夫GT)
- 换代在即,现在是抄底 7.5代 高尔夫的最佳时机吗(换代在即现在是抄底)
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
- 七年前的这部剧有毒,全剧只有女主红到发紫,男主至今无人认识(七年前的这部剧有毒)
热门推荐
- css 图片边缘虚化(CSS3对图片照片进行边缘模糊处理的实现)
- web服务器最低配置(分享几种常见WEB服务器配置方案)
- pythonexcel生成报表(python生成每日报表数据Excel并邮件发送的实例)
- 云服务器增加硬盘分区(云服务器硬盘要根据业务类型选择)
- python爬取豆瓣电影评论(python使用requests模块实现爬取电影天堂最新电影信息)
- ASP.NET常见面试题
- css如何两列布局(浅谈CSS 多栏布局Multi-Columns Layout)
- python 操作html(Python HTML解析模块HTMLParser用法分析爬虫工具)
- sqlserver2012卸载工具(Windows下SQL Serever 2012彻底卸载删除教程)
- docker测试环境搭建(docker环境搭建JMeter+Grafana+influxdb可视化性能监控平台的教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9