繁体   English   中英

VueJS 在 EventBus 接收到新数据后重新渲染组件

[英]VueJS re-render component after EventBus receives new data

每次事件总线接收到新数据时,都会调用计算得到的 function。 如何重新渲染组件,以便显示新数据?

<template lang="pug">
  div
    div(v-for='user in filtered')
      p {{ user.name }}
</template>

<script>
  computed: {
    filtered() {
      // filter by using data
      return this.users.filter((user) =>
        return this.data.includes(user.name)
      );
    }
  },
  created() {
    EventBus.$on('data', (data) => {
      this.data = data;
    }
  },
  data() {
    return {
      data: [],
      users: [
        // users
      ]
    }
  }
</script>

为了检测是否需要渲染, Vue 检查对象和 arrays 的引用,而不是它们的值或属性。

我怀疑从事件总线传递的data数组与组件中的数据数组相同。

使用扩展运算符创建一个新数组并触发重新渲染:

created() {
  EventBus.$on('data', (data) => {
    this.data = [...data];
  }
},

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM