vue动态路由之间切换如何缓存数据?

发布于 2022-09-11 21:02:17 字数 427 浏览 11 评论 0

父组件:

<keep-alive>
  <router-view></router-view>
</keep-alive>

子组件:

mounted() {
    // 这里做数据请求
}

当我先从父组件跳转到子路由'/a/id1'时可执行mounted中的数据请求
然后我再跳转到'/a/id2'时,组件被复用了,不会再执行mounted

两种解决办法:
1.在router-view上加key
2.数据请求放在activated中

但是我现在页面之间是tab切换,父路由是翻页数据,所以我希望在路由切换的时候数据能缓存起来而不是重新去请求数据。所以对于这种路由之间的跳转,怎么能把数据缓存起来而且数据都是正确的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

这样的小城市 2022-09-18 21:02:17
  1. keep-alive 这个东西要是用不好还不如不用......
  2. 单页应用目前缓存数据无非那几种. 假如你要缓存一个变量, 可以写一个js文件暴露出来一个对象;在两个.vue文件分别引入;这样你在a.vue跳到b.vue 的时候就把数据放到js文件那个对象里.到b.vue直接拿. 但这种也有个缺点.就是手动刷新,数据消失;
  3. 还有一种, 假如你现在做的是嵌入到webview的网页,也就是看不见url; 可以把数据JSON.stringify一下. 当query携带过去.b.vue直接拿;
  4. vuex 本地存储 滥用也不太好
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文