返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vuex中mapState思想应用
  • 616
分享到

vuex中mapState思想应用

2024-04-02 19:04:59 616人浏览 安东尼
摘要

目录1、map方法2、应用背景: 在需求开发过程中,有的接口返回的结果中有很多字段需要展示到页面上。通常可以将这些字段在.Vue文件中封装为计算属性,或者重新将对应字段赋值到 dat

背景:

在需求开发过程中,有的接口返回的结果中有很多字段需要展示到页面上。通常可以将这些字段在.Vue文件中封装为计算属性,或者重新将对应字段赋值到 data 中的字段来达到便于使用的目的。如下:


computed(){
  count1(){
    return this.targetObj.count1
  },
  count2(){
    return this.targetObj.count2
  },
  // ...
  // 想象一下。你要写 5 遍 或者 10 遍类似的代码
}

但是不管哪种方法,都会带来大量的代码冗余,极为难受。为解决这种现象,本文借用了使用了vuex map 方法的思想,极大的缩减了冗余代码,并且能够对数据获取做统一的容错处理。

1、map方法

vuex 中基本的 state 提取使用方法,可通过 以下方式:


computed(){
  count(){
    return this.$store.count
  }
}

同时 vuex 也同样注意到了问题,当 store 中要获取的数据很多时,这种方式将会产生极大的代码冗余,重复代码遍地走。你将会看到大量的计算属性的定义,以及长链路的对象属性提取。因此vuex 定义了一种 map 方法,用来批量的获取 store 中的指定数据。
这种 map 方法实际上就是一种 工厂函数(高阶函数),用来生产特定形式的函数。以下是源码,可以看到,mapState 其实最终会返回一个对象 res, res中的每个属性都是一个方法,而这个方法返回 state 中的值。


  var mapState = nORMalizeNamespace(function (namespace, states) {
    // 定义一个对象 用于存储 获取指定属性的方法
    var res = {};
    normalizeMap(states).forEach(function (ref) {
      var key = ref.key;
      var val = ref.val;
      // 定义 获取指定对象中指定属性的方法
      res[key] = function mappedState () {
        var state = this.$store.state;
        var getters = this.$store.getters;
        // 根据 namespace 查找指定的 store 模块对象
        if (namespace) {
          var module = getModuleByNamespace(this.$store, 'mapState', namespace);
          if (!module) {
            return
          }
          state = module.context.state;
          getters = module.context.getters;
        }
        // 获取通过指定 namespace 得到的 store module 中的属性
        return typeof val === 'function'
          ? val.call(this, state, getters)
          : state[val]
      };
    });
    // 返回 函数对象
    return res
  });

2、应用

仿照这种思想,可以对某个复杂对象中的字段的获取方式进行优化。定义的工厂函数如下所示


export const mapTargetValue = (nameSpace, keyList = [])=>{
  const result = {}
  // 注意:返回的方法不要使用箭头函数,否则拿不到 this
  // 这里 可以兼容两种形式的 keyList ,参考 mapState 中属性重命名的使用形式
  if(Array.isArray(keyList)){
    keyList.forEach( key => result[key] = function(){ 
        // 这里假设 可以直接在 this 上 获取得到 namespace对象
        // 当然 指定对象的获取复杂程度取决于 你的代码逻辑
        return this[nameSpace][key] || 0
    })   
  }else if(typeof keyList === 'object' && keyList){
    for(let key in keyList){
      result[keyList[key]] = function(){ return this[nameSpace][key] || 0}
    }
  }
  return result
}

定义的该方法使用方式与 mapState 使用方式完全一致。与之前的取值方式相比,可大大缩减重复代码量。具体应用如下


computed: {
    ...mapTargetValue("targetObj", ["count1", "count2"]),
    ...mapTargetValue("targetObj", { count1: "count3", count2: "count4"}),
}

到此这篇关于vuex中mapState思想应用的文章就介绍到这了,更多相关vuex mapState内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vuex中mapState思想应用

本文链接: https://lsjlt.com/news/137617.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vuex中mapState思想应用
    目录1、map方法2、应用背景: 在需求开发过程中,有的接口返回的结果中有很多字段需要展示到页面上。通常可以将这些字段在.vue文件中封装为计算属性,或者重新将对应字段赋值到 dat...
    99+
    2024-04-02
  • vuex中mapState,mapGetters,mapActions,mapMutations怎么用
    这篇文章主要为大家展示了“vuex中mapState,mapGetters,mapActions,mapMutations怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研...
    99+
    2024-04-02
  • vuex中mapState、mapGetters、mapMutations、mapActions的作用是什么
    本篇文章为大家展示了vuex中mapState、mapGetters、mapMutations、mapActions的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能...
    99+
    2024-04-02
  • Vue3使用Vuex之mapState与mapGetters详解
    目录1.如何使用?2.代码封装3.解题思路1.如何使用? 在Vue中我们可以通过点语法很容易的获取到Vuex中state的值,但当state数据比较多时,这样很不方便,可以借助ma...
    99+
    2023-03-20
    Vue3 Vuex mapState mapGetters Vue3 Vuex
  • Vue3怎么使用Vuex的mapState与mapGetters
    今天小编给大家分享一下Vue3怎么使用Vuex的mapState与mapGetters的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • vuex中...mapstate和...mapgetters的区别及说明
    目录...mapstate和...mapgetters的区别…mapstate…mapGettersvuex mapState mapGetters用法及...
    99+
    2024-04-02
  • 如何解决mpvue+vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用的问题
    这篇文章主要介绍如何解决mpvue+vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题分析•...
    99+
    2024-04-02
  • vue3在setup中使用mapState解读
    目录vue3 setup使用mapState创建一个hookvue3 setup语法糖中使用mapState在setup函数中使用在setup语法糖中使用总结vue3 setup使用...
    99+
    2023-05-16
    vue3 setup setup使用mapState 使用mapState
  • 不要中了ERP设计思想的毒(不是管理思想)
    背景:大型制造装备, 需要分批发货, 客户现场安装(安装过程持续大于15天)问题描述:用户反馈了一个问题,基本逻辑是,如果在智能制系统勾选【是否更新发货】信息,如果勾选了, 系统会自动更新CRM系统, 现场安装服务团队自动接收到相应信息。对...
    99+
    2023-06-05
  • uniapp中vuex的应用使用步骤
    目录一、vuex是什么?二、使用步骤1.引入2.state属性,主要功能为存储数据3. Getter属性,主要功能为计算筛选数据4. Mutation属性,Vuex中store数据改...
    99+
    2022-11-13
    uniapp使用vuex的作用 uniapp vuex uniapp怎么使用vuex
  • vue中的vuex是什么意思
    这篇文章将为大家详细讲解有关vue中的vuex是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的...
    99+
    2023-06-22
  • VUE中的mapState和mapActions如何使用
    本文小编为大家详细介绍“VUE中的mapState和mapActions如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“VUE中的mapState和mapActions如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-02
  • JAVA中的SPI思想介绍
    目录1. SPI介绍2. SPI规则3. SPI案例3.1 组件的定义3.2 组件的实现3.3 组件的选用4. SPI原理5. SPI要求6. SPI应用总结1. SPI介绍 SPI...
    99+
    2024-04-02
  • Python中的编程思想(1)
    博客核心内容: 1、Python中的编程思想与技巧举例 ...
    99+
    2023-01-31
    思想 Python
  • IO流中的缓冲思想
    这篇文章主要讲解了“IO流中的缓冲思想”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“IO流中的缓冲思想”吧!缓冲思想   (因为内存的运算速度要远大于硬盘的原酸速度,所以...
    99+
    2023-06-02
  • 如何快速应用vue中的vuex
    如何快速应用vue中的vuex,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。vuex.js状态(数据)管理在vue中当我们管理...
    99+
    2024-04-02
  • VUE中的mapState和mapActions的使用详解
    最近在开发一套系统,前端使用VUE开发,由于本人是后端开发,前端也会一点,但是VUE接触不多,在VUE项目开发遇到的一些坑记录一下,不是专业前端写好的不好,大家不要唝。。。 在VUE...
    99+
    2024-04-02
  • vuex中特殊应用的示例分析
    这篇文章主要介绍了vuex中特殊应用的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有需求才会有应用!需求:vue项目中,我需要一个...
    99+
    2024-04-02
  • C#中AOP编程思想是什么
    这篇文章给大家分享的是有关C#中AOP编程思想是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、什么是AOPAOP:Aspect Oriented Programming的缩写,意为面向切面编程,通过预编译...
    99+
    2023-06-29
  • JAVA编程思想笔记 : 复用类
    复用代码是 Java 众多引人注目的功能之一.但是想要成为机具革命性的语言,仅仅能复制代码并对之加以改变是不够的,它还必须能够做更多的事情.组合语法只需将对象引用置于新类中即可.初始化引用位置定义对象的地方,他们总是能够在构造器被调用之前初...
    99+
    2021-03-31
    java教程 JAVA
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作