首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组件的多个数据源

组件的多个数据源
EN

Stack Overflow用户
提问于 2019-05-10 22:18:25
回答 2查看 106关注 0票数 0

我在一个进程中支持多个data source来通过属性和存储在一个组件中显示数据。

我们的想法是构建一个列表组件,如果没有道具,它将从存储中加载数据。否则,显示道具中的数据。因此,我在search功能和普通listing view的上下文中确保reusability

下面的代码看起来像这样:

代码语言:javascript
复制
<template>
  <div>
    <li v-for="user in this.dataSource" :key="user.age">
      {{ user.name }}
    </li>
  </div>
</template>
<script>
export default {
  props: {
    userData: {
      type: Array,
      default: null,
    }
  },
  created() {
    // dispatch action to get user data
    this.$store.dispatch("GET_USER_DATA");
  },
  data() {
    return {
      dataSource: this.userData !== null ? this.userData: this.$store.state.users
    };
  }
};

到目前为止,该存储只保存静态数据。但在REST的上下文中,它本质上是异步的。所以有时候,我看不到数据。

所以我的问题是,dataSource的这个逻辑还能进一步改进吗?

谢谢罗宾。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-10 22:45:12

您应该将dataSource更改为computed属性。当更改this.userDatathis.$store.state.users时,它将自动重新计算

代码语言:javascript
复制
computed: {
  dataSource() {
    return this.userData !== null ? this.userData: this.$store.state.users
  }
}

有关Vuejs计算的更多信息,请查看the document

票数 1
EN

Stack Overflow用户

发布于 2019-05-10 22:45:31

无论如何,这是一种糟糕的方法。存储应该用来包含数据,组件应该只是“显示”它,并通过操作和突变来操作它。

因此,在本例中,我删除了propscreateddata部分,并将一个getter添加到存储中,该存储应该在组件中的computed中实现。这里没什么特别的。

您不应该需要使用适当的存储设置手动加载数据。始终使用computed创建getter并将其“加载”到组件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56079523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档