计算属性返回空数组

问题描述

我在VueJS中有一个计算属性,如下所示:

  computed: {
    groupedTemplates() {
      const ret = this.templates.reduce((acc,value) => {
        value.group = value.group || "Ungrouped";
        if (!acc[value.group]) {
          acc[value.group] = [];
        }
        acc[value.group].push(value);
        return acc;
      },[]);
      console.log(ret);   // <---- This works!!
      return ret;
    },...mapState(["currentPatient","currentSite","phrases","templates"]),},

当我查看控制台时,可以看到正确的响应,即 app.js:4061 [Ungrouped: Array(6),Note: Array(2),Order Set: Array(3)]

但是,当我在代码中使用groupedTemplates时,它的值为[]

当我将返回行更改为

return 34;

它按预期返回34。有什么作用?

解决方法

因为您的reduce不会将项添加到数组中,而是在Array对象上创建新的属性-您无法use a string as an index到数组中。

您可能想要的是从您计算的Object中返回groupedTemplates ...