【发布时间】:2021-07-14 17:26:41
【问题描述】:
我的问题与此处列出的问题类似: Vue.js - Destroy a cached component from keep alive
我还在使用 Vue 路由器创建一种选项卡系统,因此代码如下所示:
//My Tab component
<template>
<tab>
<tab-selector />
<keep-alive>
<router-view />
<!-- This router view is used to render one of the childRoutes of the main TabRoute -->
</keep-alive>
</tab>
</template>
<script>
handleTabClose() {
//Close tab logic
this.$destroy();
//Insert router push to be one of the other tabs that have not been closed.
}
</script>
vue-router 使用的路由大致如下:
{
path: "/tab",
name: "TabComponent",
component: () => import("InsertComponentPath"),
children: [{TabRoute1, TabRoute2, TabRoute3}]
},
Keep alive 用于在切换选项卡(切换子路由)时保持状态。
我想在关闭选项卡时从缓存中删除 childRoute/Component,但在我的选项卡组件中使用 this.$destroy 似乎正在破坏整个选项卡组件,而不是其中的子组件。
此问题和其他堆栈溢出问题中也说明的 V-if 解决方案将不起作用,因为我只想从内存中删除此特定选项卡,这会删除所有选项卡。
感谢您的帮助。
【问题讨论】:
-
我能问一下为什么吗?如果我们知道您为什么要从缓存中“删除”组件,则可能还有另一种解决方案。
-
@tauzN 抱歉回复晚了,原因是在某些情况下,当标签页关闭并再次打开时,它会以与关闭时相同的状态打开,但理想情况下我们希望它打开像以前一样新鲜。
-
你能在codepen或codesandbox上准备一些示例代码吗?
标签: javascript typescript vue.js vue-router