• 【Vuex】mapGetters 辅助函数


    原文:https://www.cnblogs.com/websmile/p/8328138.html

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

    import { mapGetters } from 'vuex'
    
    export default {
      // ...
      computed: {
      // 使用对象展开运算符将 getter 混入 computed 对象中
        ...mapGetters([
          'doneTodosCount',
          'anotherGetter',
          // ...
        ])
      }
    }

    如果你想将一个 getter 属性另取一个名字,使用对象形式:

    mapGetters({
      // 映射 `this.doneCount` 为 `store.getters.doneTodosCount`
      doneCount: 'doneTodosCount'
    })

    扩展:ES6展开运算符

    定义:

    .展开运算符允许一个表达式在某处展开。

    使用场景

      1.展开函数在多个参数的地方使用 。意指用于函数传参

      2.多个元素的地方使用,意指用于数组字面量

      3.多个边框的地方使用,意指用于解构赋值

    注意事项

      展开运算符不能用在对象当中,因为目前展开运算符只能在可遍历对象(iterables)可用。

      iterables的实现是依靠[Symbol.iterator]函数,而目前只有Array,Set,String内置[Symbol.iterator]方法,而Object尚未内置该方法,因此无法使用展开运算符。不过ES7草案当中已经加入了对象展开运算符特性。

    函数调用中使用展开运算符

    之前实现方式

    function test(a, b, c) {
        return a + b +c;
     }
    var args = [0, 1, 2];
    test.apply(null, args);//3

    如上,我们把args数组当作实参传递给了a,b,c,这边正是利用了Function.prototype.apply的特性。

    ES6实现方式

    function test(a, b, c) {
        return a + b + c;
     }
    var args = [0, 1, 2];
    test(...args);//3

    使用...展开运算符就可以把args直接传递给test()函数。

    数组字面量中使用展开运算符

    例如:两个数组合并为一个数组

    var arr1=['a','b','c'];
    var arr2=[...arr1,'d','e']; //['a','b','c','d','e']

    用在push函数中,可以不用apply()函数合并2个数组

    var arr1=['a','b','c'];
    var arr2=['d','e'];
    arr1.push(...arr2); //['a','b','c','d','e']

    用于解构赋值

    解构赋值也是ES6中的一个特性,而这个展开运算符可以用于部分情景:

    展开运算符在解构赋值中的作用跟之前的作用看上去是相反的,将多个数组项组合成了一个新数组。

    let [arg1,arg2,...arg3] = [1, 2, 3, 4];
    arg1 //1
    arg2 //2
    arg3 //['3','4']

    ps:

      let [arg1,...arg2,arg3] = [1, 2, 3, 4]; //报错

      即:解构赋值中展开运算符只能用在最后:

    类数组对象变成数组

    展开运算符可以将一个类数组对象变成一个真正的数组对象:

    var obj = document.getElementById("box").getElementsByTagName("li");
    Array.isArray(obj);//false
    var arr=[...obj]; 

    Array.isArray(arr); //true

    相关资料:https://vuex.vuejs.org/zh-cn/getters.html

         https://www.cnblogs.com/mingjiezhang/p/5903026.html

         http://es6.ruanyifeng.com/#docs/destructuring

  • 相关阅读:
    [LintCode 614.] 二叉树的最长连续子序列 II
    [LintCode 90.] k数和 II
    [LintCode 1674.] 倒可乐
    [LintCode 797.] 到达一个数字
    [LintCode 1691.] 买卖股票的最佳时机V
    [LintCode 69. 242.] 二叉树的层次遍历
    [LintCode 229.] 栈排序
    [LeetCode 1671.] 玩游戏
    [LintCode 1668.] 区间最小覆盖
    (十)线程同步
  • 原文地址:https://www.cnblogs.com/robinunix/p/11201029.html
Copyright © 2020-2023  润新知