【发布时间】:2021-09-10 20:36:13
【问题描述】:
当我在用户配置文件中并尝试转到另一个配置文件时,我遇到了一个问题,URL 更改但组件没有重新加载,所以我使用 :key="$route.path" 来重新加载组件,但每个用户配置文件都有问题不同的 URL,例如 about 和 photos 以及不同的事情,问题是当我在 about 和 go to photos 组件重新加载时
我的目的是什么
当我在同一个 $route.params.username 中时,我怎么不能使用 :key="$route.path"
我的个人资料组件
<div class="profile-menu-top">
{{user.username}}
{{user.num_followers}} followers
</div>
<div class="profile-menu">
<router-link :to="{ name: 'Account', params: { username: $route.params.username}}" class="profile-menu-link ">Timeline</router-link>
<router-link :to="{ name: 'UserAbout', params: { username: $route.params.username }}" class="profile-menu-link ">About</router-link>
<router-link :to="{ name: 'MyAccount'}" class="profile-menu-link ">Videos</router-link>
<router-link :to="{ name: 'MyAccount'}" class="profile-menu-link ">Posts</router-link>
</div>
</div>
路由器索引
{
path: '/u/:username',
name: 'Account',
component: Account,
},
个人资料
<Profile v-if="userAccount" :key="$route.path" />
【问题讨论】:
-
您可以在 Account 组件中使用 vue-router 的 'beforeRouteUpdate' 在切换到新用户时触发。我可能会将
user作为道具从帐户传递到配置文件,而不是依赖于使用路由参数重新渲染并在配置文件中获取数据,以防止不必要地重新渲染某些 DOM 节点以及能够获取数据在切换之前,为您节省一个加载屏幕。 router.vuejs.org/guide/advanced/navigation-guards.html -
@Excalibaard 你能告诉我在哪里可以添加这个,因为我在 vue 中有点不习惯
-
欢迎来到 StackOverflow,如果您的答案可以接受,请在有机会时将其标记为已选择。
-
好的,明天可以将此答案标记为可接受。
标签: vue.js vuejs2 vue-component vue-router