程序员应该知道的vuex冷门小技巧(超好用)

目录
  • 当访问某个数据项嵌套太深了,优化一下访问的方式
    • mapState的使用步骤
      • 使用
      • 原理
  • 如果vuex中的数据与本组件内的数据名相同,怎么办呢?
  • 使用全局state
  • 那如果是分模块化呢?如何使用modules中的state?
  • 总结

当访问某个数据项嵌套太深了,优化一下访问的方式

  • 我相信每一个程序员都会使用vuex吧,首先我承认vuex真的超好用,尤其是在项目特别大的时候,代码会看起来非常的简洁,也方便维护,但是项目大了,vuex的公共数据的嵌套也会越来越深,在组件中使用的时候就会像下面这张图一样,我要一直点啊点,才能拿到最里面的数据,项目大了点都要点老半天......

在我的不断尝试中,成功的发现了,vuex其实有一个辅助函数map可以解决这个问题,下面就把我总结到的语法分享给大家啦~希望可以帮到你

  • 辅助函数map作用:简化使用state, getters, mutatioins, actions

mapState的使用步骤

// 1. 导入辅助函数mapState,它是在vuex中定义的一个工具函数。
//  es6 按需导入 import { mapState } from 'vuex'
import { mapState } from 'vuex'

computed: {
   // 说明1: ...对象 是把对象展开,合并到computed
   // 说明2: mapState是一个函数
   //  ['数据项1', '数据项2']
   ...mapState(['xxx']),
   ...mapState({'新名字': 'xxx'})
}

使用

script:   this.xxx
模板:     {{xxx}}

图示:

原理

  • mapState是辅助函数,将vuex中的数据投射到组件内部;
  • computed:{ ...mapState() } 这里的...是对象的展开运算符,整体来看是对象的合并。

如果vuex中的数据与本组件内的数据名相同,怎么办呢?

辅助函数mapState对数据重命名

...mapState({'新名字': 'xxx'})

## Vuex-map函数用法汇总

使用全局state

  • 直接使用: this.$store.state.xxx;
  • map辅助函数:
computed: {
  // 省略其他计算属性
  ...mapState(['xxx']),
  ...mapState({'新名字': 'xxx'})
}

那如果是分模块化呢?如何使用modules中的state?

图示

  • 直接使用: this.$store.state.模块名.xxx;
  • map辅助函数:
computed: {
  ...mapState('模块名', ['xxx']),
  ...mapState('模块名', {'新名字': 'xxx'})
}

使用全局getters

  • 直接使用:this.$store.getters.xxx
  • map辅助函数:
computed: {
  ...mapGetters(['xxx']),
  ...mapGetters({'新名字': 'xxx'})
}

使用modules中的getters

  • 直接使用: this.$store.getters.模块名.xxx
  • map辅助函数:
computed: {
  ...mapGetters('模块名', ['xxx']),
  ...mapGetters('模块名',{'新名字': 'xxx'})
}

使用全局mutations

  • 直接使用:this.$store.commit('mutation名', 参数)
  • map辅助函数:
methods: {
  ...mapMutations(['mutation名']),
  ...mapMutations({'新名字': 'mutation名'})
}

使用modules中的mutations(namespaced:true)

  • 直接使用: this.$store.commit('模块名/mutation名', 参数)
  • map辅助函数:
methods: {
  ...mapMutations('模块名', ['xxx']),
  ...mapMutations('模块名',{'新名字': 'xxx'})
}

使用全局actions

  • 直接使用:this.$store.dispatch('action名', 参数)
  • map辅助函数:
methods: {
  ...mapActions(['actions名']),
  ...mapActions({'新名字': 'actions名'})
}

使用modules中的actions(namespaced:true)

  • 直接使用: this.$store.dispatch('模块名/action名', 参数)
  • map辅助函数:
methods: {
  ...mapActions('模块名', ['xxx']),
  ...mapActions('模块名',{'新名字': 'xxx'})
}
  • 如果namespaced为true,则需要额外去补充模块名
  • 如果namespaced为false,则不需要额外补充模块名

总结

到此这篇关于vuex冷门小技巧的文章就介绍到这了,更多相关vuex冷门小技巧内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解vuex commit保存数据技巧

    vuex 单向数据流,推荐的commit 改变state数据,写起来非常繁琐,因为改数据可能要写很多commit函数. 依据我的理解,单向数据流主要是为了避免数据混乱,便于调试. 说白了,就是一个数据改变了,是什么促使他改变的. 数据流向永远都是一个方向,下游是没有权利改变数据的,所以需要数据发放中心同一级的方法来改变数据. 单项数据流,对于react来说,的确是必要的,但对于vue来说,是那么有必要吗? vue采用数据依赖更新,必要的数据都采用Object.defineProperty处理.给

  • 程序员应该知道的vuex冷门小技巧(超好用)

    目录 当访问某个数据项嵌套太深了,优化一下访问的方式 mapState的使用步骤 使用 原理 如果vuex中的数据与本组件内的数据名相同,怎么办呢? 使用全局state 那如果是分模块化呢?如何使用modules中的state? 总结 当访问某个数据项嵌套太深了,优化一下访问的方式 我相信每一个程序员都会使用vuex吧,首先我承认vuex真的超好用,尤其是在项目特别大的时候,代码会看起来非常的简洁,也方便维护,但是项目大了,vuex的公共数据的嵌套也会越来越深,在组件中使用的时候就会像下面这张图

  • 分享Java程序员应该知道的10个调试技巧

    可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在开始之前,推荐大家去看看Eclipse shortcuts这篇文章,它将会给你带来很多方便.在本文中使用的是Eclipse Juno版(Eclipse 4.2),在开始前给大家提3点建议! 不要使用System.out.println作为调试工具 把所有涉及到的组件日志级别激活并使用 使

  • JavaScript程序员应该知道的45个实用技巧

    如你所知,JavaScript是世界上第一的编程语言,它是Web的语言,是移动混合应用(mobile hybrid apps)的语言(比如PhoneGap或者Appcelerator),是服务器端的语言(比如NodeJS或者Wakanda),并且拥有很多其他的实现.同时它也是很多新手的启蒙语言,因为它不但可以在浏览器上显示一个简单的alert信息,而且还可以用来控制一个机器人(使用nodebot,或者nodruino).掌握JavaScript并且能够写出组织规范并性能高效的代码的开发人员,已经

  • 经验丰富程序员才知道的15种高级Python小技巧(收藏)

    目录 1.通过多个键值将对象进行排序 2.数据类别 3.列表推导 4.检查对象的内存使用情况 5.查找最频繁出现的值 6.属性包 7.合并字典(Python3.5+) 8.返回多个值 9.列表元素的过滤 filter()的使用 10.修改列表 11.利用zip()来组合列表 12.颠倒列表 13.检查列表中元素的存在情况 14.展平嵌套列表 15.检查唯一性 1.通过多个键值将对象进行排序 假设要对以下字典列表进行排序: people = [ { 'name': 'John', "age&quo

  • 经验丰富程序员才知道的8种高级Python技巧

    本文将介绍8个简洁的Python技巧,若非经验十足的程序员,你肯定有些从未见过.向着更简洁更高效,出发吧! 1.通过多个键值将对象进行排序 假设要对以下字典列表进行排序: people = [ { 'name': 'John', "age": 64 }, { 'name': 'Janet', "age": 34 }, { 'name': 'Ed', "age": 24 }, { 'name': 'Sara', "age": 6

  • 学习JavaScript一定要知道的3个小技巧

    目录 一.神奇的扩展运算符 1.拷贝数组 2.合并数组 3.展开对象 二.进行空检查的最佳方法 1.可选链操作符 2.空值合并运算符 三.使用 .map()..reduce() 和 .filter() 前言: 通常在 Angular 或 React 项目中,code review 时看到一些老式的 JavaScript 代码,就会将开发人员归类为初学者.但是,如果您知道以下 3 个技巧,您将被视为现代 JavaScript 的尤达大师.那么,让我们开始我们的旅程吧! 一.神奇的扩展运算符 扩展运

  • 做一个优秀程序员应该知道的15件事

    1. 懂得分享.尽可能使用开源,并且当你有能力的时候,要对其有所贡献.聚全社会之智慧,胜过某些"大"公司之短视. 2. 公平竞争.尝试其他技术.框架.方法和观点.不要总以为只有你的选择才是可行的.别的选择也有可能比你的要强得多.要以开放的心态,来检验其他人的选择. 3. 不要攻击他人.像第2条所说的,不要仅仅因为别人恰巧使用.Net.Java或PHP就去攻击他们(我在这方面有一次教训).有时,它们或许要比你所认为的更有效.只要别人不是一无是处,你就可以从他们那里学到很多东西. 4. 自

  • 优秀程序员必须知道的20个位运算技巧

    一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读<编程之美>求"1的数目"时,我才开始觉得位运算是如此之美,后来读到 <Hacker's Delight>,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!但掌握简单的位运算技巧

  • jQuery开发者都需要知道的5个小技巧

    1.禁用右键菜单 复制代码 代码如下: $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); }); 2.让字体闪烁 复制代码 代码如下: jQuery.fn.flash = function( color, duration ) { var current = this.css( 'color' ); this.animate( { color: 'rgb

  • 程序员必知35个jQuery 代码片段

    jQuery如今已经成为Web开发中最流行的JavaScript库,通过jQuery和大量的插件,你可以轻松实现各种绚丽的效果.本文将为你介绍一些jquery实用的技巧,希望可以帮助你更加高效地使用jQuery. 收集的35个 jQuery 小技巧/代码片段,可以帮你快速开发. 1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); });

随机推荐