在Vue.js内部与ES6中的函数结合使用的传播运算符

时间:2019-05-31 10:50:12

标签: javascript vue.js ecmascript-6

我刚刚浏览了habitica代码(一个vue.js应用程序),遇到了以下HERE这样的传播算子用法。在内部计算中,您具有以下内容:

computed: {
  ...mapState({
    user: 'user.data',
    castingSpell: 'spellOptions.castingSpell',
    isRunningYesterdailies: 'isRunningYesterdailies',
  }),
}

现在,我似乎从来没有将扩散运算符与函数结合使用,不确定这里发生了什么,mapState可能是另一个文件中存在的函数,看起来像这样:

export function mapState (states) {
  const res = {};

  normalizeMap(states).forEach(({ key, val }) => {
    res[key] = function mappedState () {
      return typeof val === 'function' ?
        val.call(this, this.$store.state, this.$store.getters) :
        get(this.$store.state, val);
    };
  });

  return res;
} 

我了解与ArrayObject一起使用时的传播算子,但是函数在这里到底发生了什么?

1 个答案:

答案 0 :(得分:2)

您的函数正在返回Object,该代码正被传播,

您可以通过一个简单的示例来了解

  • 这里func是一个函数,它根据传递给它的值创建一个对象
  • me对象内部,我有一个称为info的属性,我想将该属性设置为一个对象,因此我只需用func调用name and age并传播

let func = (name,age)=> ({name,age})

let me = {
  info: {...func('code maniac', 24)}
}

console.log(me)