4

我有一个列出一堆可点击标签的 Vue 组件。当您单击一个标签时,它会将您带到另一个页面,其中包含包含该标签的对象列表。

组件代码的相关部分是:

<template>
<div>
  <h2>All Tags</h2>
  <TagList v-bind:tags="tags"/>
</div>
</template>
...
<script>
import TagList from './TagList'
export default {
  name: 'AllTags',
  components: {
    TagList
  },
  data () {
    return {
      tags: []
    }
  },
  mounted () {
    tags = // array loaded from a database
  }
}
</script>

当我最初查看页面时,这一切都很好。但是,如果我从这个列表中浏览,例如通过单击单个标签,然后再浏览回来,我只会看到<h2>All Tags</h2>标题。在浏览器中使用 Vue 调试器,可以看到数据还在。

<router-view :key="$route.fullPath">用来控制整个应用程序并怀疑问题出在密钥上。

有人可以在这里指出我正确的方向吗?TagList每次访问应用程序的该页面时,如何让组件呈现?

编辑:这是TagList组件的代码:

<template>
<div class="tags">
  <Tag v-for="tag in tags" v-bind:tag="tag" v-bind:key="tag" />
</div>
</template>

<script>
import Tag from './Tag'
export default {
  name: 'TagList',
  props: ['tags'],
  components: {
    Tag
  }
}
</script>
4

1 回答 1

0

您可以尝试删除所有认为不需要使用的 v-bind,我已经检查了您的代码,在访问标签并返回后它似乎工作正常,所有标签仍然呈现。您可以查看此工作示例。

https://codesandbox.io/s/vue-template-3tcs4?fontsize=14

于 2019-06-03T11:53:22.247 回答