【发布时间】:2018-12-09 13:08:29
【问题描述】:
如何分别使用不同的参数保持 vue-router 活着?
TL:DR:
让我们考虑一个开发像 facebook 这样的网站的例子。每个用户都有一个个人资料页面。因为有很多用户,我们不想迭代所有用户并在加载时加载所有个人资料页面,如下所示
<template v-for="profile in profilePages">
<profile-page :data="profile" v-show="this.route.params['id'] === channel.id"/>
</template>
常见的方法是:
router.js:
{
component: ProfileWrapper,
path: '/profile',
children: [
{
path: ':id',
component: ProfilePage
}
]
}
频道页:
<keep-alive>
<router-view :=key="$route.fullPath"></router-view>
</keep-alive>
但这就是问题所在。由于用户访问某人的页面并导航离开,我希望路由器将其保持在缓存中的某个地方,或者只是隐藏它。在我的特殊情况下,用户最多访问 2-3 个配置文件并在它们之间切换很多。而且切换操作很费时间,因为里面有很多DOM。
我可以使用 vue-router 和 keep-alive 吗?
编辑:
请查看sandbox。每次在页面之间切换 (#1,#2,#3,#4) Vue 从头开始创建新组件 ProfileInnerComponent(而不是像 v-show 那样从缓存中)。这通过检查红色 div 很明显,ProfileInnerComponent 的 create 钩子被调用,它发出事件,App 将 div 添加到当前时间。
【问题讨论】:
-
一个更好的例子,明白你想要什么?对不起,我不明白
-
@roliroli 请查看sandbox,底部有一个控制台选项卡,请打开它。在页面(#1、#2、#3、#4)之间打开切换。你会发现控制台出现
Some component created again time ??消息,这意味着每次切换vue都会重新渲染页面
标签: vue.js vue-router