我是靠谱客的博主 酷酷绿茶,最近开发中收集的这篇文章主要介绍vue实现前进刷新后退不刷新,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参考文章:
https://blog.csdn.net/qq_40963664/article/details/80062130
要实现前进刷新后退不刷新,要借助vue的keep-alive,一定要了解钩子函数的执行顺序。
不使用keep-alive
beforeRouteEnter --> created --> mounted --> destroyed
使用keep-alive
beforeRouteEnter --> created --> mounted --> activated --> deactivated
再次进入缓存的页面
只会触发beforeRouteEnter -->activated --> deactivated
注:
created和mounted不会再执行,所以要把数据的获取放在activated函数中。
我在使用keepalive时犯得一个错误就是把keepalive的值有时设为true,有时设为false,keepalive的值应该一直都为true,但是要判断是否是页面刷新,以及是否是后退的操作,来决定activated中函数是否需要重新加载,还是取之前缓存的数据。

	  beforeRouteEnter (to, from, next) {
          if (from.name == 'detail') {//如果页面是后退的话
            to.meta.isBack = true;//将isBack的标识改为true
            next();
          } else {
            to.meta.isBack = false;
            next();
          }
          next();
        },
        created () {
          this.isFirstEnter = true; //判断页面是否刷新
        },
        activated () {
          if (!this.$route.mate.isBack || this.isFirstEnter) {
            this.getTabledata(); //如果页面刷新或者第一次进入,重新加载数据
          }
          this.isFirstEnter = false; //把isFirstEnter 的值置为false
        }
在index.js页面加上meta属性
	   {
          path: '/portal/serveSpecifice', // 服务治理规范集
          name: 'serveSpecifice',
          component: resolve => require(['@/components/pages/portal/serveSpecifice'], resolve, // 路由的懒加载
          meta: {
            keepAlive: true,
            isBack: false
          }
        }

在app.vue页面对需要缓存的页面进行缓存

<keep-alive>
    <router-view v-if="$route.meta.keepAlive">
        <!-- 这里是会被缓存的视图组件 -->
    </router-view>
</keep-alive>
 
<router-view v-if="!$route.meta.keepAlive">
    <!-- 这里是不被缓存的视图组件 -->
</router-view>

最后

以上就是酷酷绿茶为你收集整理的vue实现前进刷新后退不刷新的全部内容,希望文章能够帮你解决vue实现前进刷新后退不刷新所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部