【发布时间】:2020-11-26 11:48:11
【问题描述】:
我有一个显示所有帖子的视图。这些帖子上方有一个过滤器,用户可以根据他选择的选项过滤帖子。在他选择选项后,过滤后的帖子会返回。
假设用户过滤了帖子,然后点击其中一个帖子,这意味着显示帖子的父组件将被销毁。如果现在,用户(在特定帖子页面上)点击后退按钮,它将带他到所有帖子页面,但过滤器不会保留,因为父组件被销毁然后创建。
在特定页面单击后退按钮后保留过滤器和过滤帖子的一种解决方案是使用 vuex。当用户选择过滤器时,我们将对象存储在 vuex 中。当用户点击后退按钮时,商店已经有了过滤器。问题是按照这种方式给我带来了一些问题并且需要更多时间。
你还能想到什么方法?我不能使用keep-alive,因为我似乎只能将它用于动态组件,而不能用于任何其他方式。
【问题讨论】:
-
只需将过滤器存储在组件树的更上方,这样它就不会被破坏。
-
不是这样的。看来我错了,他们没有亲子关系
-
好的,但这真的很重要吗?只需将过滤器存放得足够高,以免损坏。为什么“不是这样”?
-
那是问题伙伴..我刚刚看了(特定帖子页面和所有帖子页面)是两条不同的路线。
-
我不知道为什么这意味着我的建议不起作用? Vue 子级可以emit events,这意味着过滤器组件可以将选择的过滤器向上发送到不会被销毁的父级,并且在导航回“所有帖子”时,过滤器会再次向下传递并处于活动状态。
标签: javascript vue.js vuejs2 vue-component vuex