如何使嵌套的 QRouteTab 保持活动状态(vuejs3 与 Quasar2)

How to keep-alive nested QRouteTab (vuejs3 with Quasar2)

我尝试创建一个带有 2 个嵌套选项卡 (see the screen shot) 的 UI,它使所有访问过的面板保持活动状态。

我这里做了个小例子:https://codesandbox.io/s/no-keep-alive-b7x2sj

然而,只有第二级面板(子选项卡)保持活动状态(我们可以在 TEST I、TEST II 等选项卡之间导航,...无需重新 运行 设置功能,请参阅控制台输出) ,但是当我们在第一级标签(父标签)之间导航时,它不再起作用:

[Quasar] Running SPA. 
##### setup -> index 
##### setup -> layout test A 
##### setup -> test i 
##### setup -> test ii 
##### setup -> test iii 
##### setup -> layout test B 
##### setup -> test j 
##### setup -> layout test A 
##### setup -> test i 

如您在上面的控制台输出中所见:

我尝试通过为 index.vue 中的每个父面板(​​测试 A、B、C、D)添加 <keep-alive> 来修复它,例如:

<q-tab-panel name="testA" class="no-padding">
  <keep-alive>
    <component :is="Component" />
  </keep-alive>
</q-tab-panel>

但是,它在下面不起作用,我得到了副作用,运行 连续两次设置“test j”,正如您在控制台中看到的那样:

[Quasar] Running SPA. 
##### setup -> index 
##### setup -> layout test A 
##### setup -> test i 
##### setup -> test ii 
##### setup -> layout test B 
##### setup -> test j 
##### setup -> test j 

您可以在此处找到代码:https://codesandbox.io/s/duplicate-run-of-setup-jjovrb

有没有人能帮我解决这些问题?或者解释为什么它没有像我预期的那样工作。

谢谢, 埃里克

如此处所述:

解决方案是不将 QTabPanel 与 QRouteTab 一起使用。

您可以在此处找到解决方案的示例:https://codesandbox.io/s/without-qtabpanel-m43nec

但是,仍然存在一个错误,运行在子路由中设置函数两次。

[Quasar] Running SPA. 
##### setup -> index 
##### setup -> layout test A 
##### setup -> test i 
##### setup -> layout test B 
##### setup -> test j 
##### setup -> test j 
##### setup -> test C 

这似乎与 vuejs 路由器的一个已知问题有关: https://github.com/vuejs/router/issues/626