vue-cli 项目,开启了keep-alive后,怎么样让组件页的路由改变的同时刷新页面

发布于 2022-09-11 20:56:42 字数 647 浏览 12 评论 0

vue项目,因为组件设置了keep-alive,所以组件会被缓存,但是该组建中有如图中的一段router-link代码功能。

当前地址 http://localhost:8080/searchResult/dress

点击按钮后,地址变成了http://localhost:8080/searchResult/women

但是地址虽然改了,但是没有刷新页面,所以数据没改变。

但是我发现,如果我手动点击刷新,新数据就会根据地址不同而改变数据。
所以想问问,怎么样在点击的时候,强制刷新页面。相当于组件刷新

图片描述

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

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

发布评论

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

评论(6

长亭外,古道边 2022-09-18 20:56:42

router-view 上加上一个唯一的 key,来保证路由切换时都会重新渲染触发钩子

<keep-alive v-if="$route.meta.keepAlive">
    <router-view :key="key"></router-view>
</keep-alive>
<router-view v-else :key="key"></router-view>

computed: {
  key() {
    // 或者 :key="$route.fullPath" 只要保证key唯一就可以了
    return this.$route.name !== undefined? this.$route.name + +new Date(): this.$route + +new Date()
  }
 }
夏の忆 2022-09-18 20:56:42

<div class="app">

<keep-alive>
  <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

</div>

router里面有meta

青朷 2022-09-18 20:56:42
watch:{
    $route(){
        //请求数据
    }
}
往昔成烟 2022-09-18 20:56:42

这东西。是个双刃剑。缓存的东西很难控制。
每次用新的还是好控制一些。

寂寞笑我太脆弱 2022-09-18 20:56:42

可以看一下vue-element-admin作者的解决方案 :
https://panjiachen.github.io/...
或者使用

beforeRouteEnter (to, from, next) { 
    next( vm => {
      // 进入页面后获取列表内容
      vm.dosth()
    }) }
笑咖 2022-09-18 20:56:42

有点迷茫 想问下 为什么既然需要组件刷新 还要使用keep-alive?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文