vue 前进刷新后退不刷新

devtools/2024/11/19 4:34:51/

本篇主要讲述vue如何通过路由实现“前进刷新后退不刷新”功能。

1. 在App.vue中配置keep-alive

// <router-view></router-view> 外添加<template><div id="app"><!-- 前进后退都刷新 --><!-- <router-view></router-view> --><keep-alive><!-- 这里是会被缓存的视图组件 --><router-view v-if="$route.meta.keepAlive"></router-view></keep-alive><!-- 这里是不被缓存的视图组件 --><router-view v-if="!$route.meta.keepAlive"></router-view></div>
</template>

2. 配置router路由,即meta对象中添加keepAlive属性

{path: '/add/addInfo',name: "addInfo",component: resolve => require(["../page/add/addInfo.vue"], resolve),meta: {keepAlive: false, //此组件不需要被缓存}
},
{path: '/add/jtinfo',name: "jtinfo",component: resolve => require(["../page/add/jtinfo.vue"], resolve),meta: {keepAlive: true, //此组件需要被缓存sBack: false,}
},

3.在需要缓存的页面配置

  data(){return {isFirstEnter: false, // 是否第一次进入,默认falsedatas: [], //页面的数据}},created() {// 只有第一次进入或者刷新页面后才会执行此钩子函数// 使用keep-alive后(2+次)进入不会再执行此钩子函数this.isFirstEnter=true;},activated() {if(!this.$route.meta.isBack || this.isFirstEnter){// 如果isBack是false,表明需要获取新数据,否则就不再请求,直接使用缓存的数据// 如果isFirstEnter是true,表明是第一次进入此页面或用户刷新了页面,需获取新数据this.datas=''// 把数据清空,可以稍微避免让用户看到之前缓存的数据// 执行了 mounted 中的事件/*this.loaGongkeInfoSearck()this.TabSwitch(0);this.heightM = document.body.scrollHeight;*/}// 恢复成默认的false,避免isBack一直是true,导致下次无法获取数据this.$route.meta.isBack=false// 恢复成默认的false,避免isBack一直是true,导致每次都获取新数据this.isFirstEnter=false;},beforeRouteEnter(to, from, next) {// 路由导航钩子,此时还不能获取组件实例 `this`,所以无法在data中定义变量(利用vm除外)// 参考 https://router.vuejs.org/zh-cn/advanced/navigation-guards.html// 所以,利用路由元信息中的meta字段设置变量,方便在各个位置获取。这就是为什么在meta中定义isBack// 参考 https://router.vuejs.org/zh-cn/advanced/meta.htmlif(from.name=='addInfo'){ //from.name即是路由里面的name属性值,即路径//判断是从哪个路由过来的to.meta.isBack=true; // 该路由过来当前页面 不需要刷新 获取新数据,直接用之前缓存的数据即可}if(from.name=='jtinfo'){to.meta.isBack=false;// 该路由过来当前页面 需要刷新 获取新数据}next();},

看看代码注释吧,应该不难理解。
这算是一种比较古老的实现方式了。
最后:大吉大利,祝你没BUG。


http://www.ppmy.cn/devtools/104828.html

相关文章

聚水潭ERP集成用友U9(聚水潭主供应链)

源系统成集云目标系统 用友U9介绍 用友U9是中型及中大型制造业云ERP&#xff0c;为企业打造数智智造全场景应用&#xff0c;多组织协同&#xff0c;构建企业生态圈&#xff0c;集团化全球化&#xff0c;项目制造实现闭环&#xff0c;聚焦中型和中大型制造企业&#xff0c;全面…

Java响应式编程

Java响应式编程是一种基于异步和非阻塞的编程范式&#xff0c;旨在处理现代应用中日益增长的高并发、海量数据以及低延迟需求。通过响应式编程&#xff0c;开发者能够以更加优雅和高效的方式编写能够应对这些挑战的应用程序。 Quick start import reactor.core.publisher.Flux…

人该怎样活着呢?48

人该怎样活着呢&#xff1f; A多观察多思考 【思考问答】 &#xff08;20240411&#xff09; B记录自己的灵感。 &#xff08;20240412&#xff09; 别人抢不走的东西&#xff1a;肚子里的食物&#xff0c;脑子里的知识&#xff0c;还有梦想&#xff08;202011…

一起学习LeetCode热题100道(61/100)

61.分割回文串(学习) 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;[[“a”,“a”,“b”],[“aa”,“b”]] 示例 2&#xff1a; …

java编辑器——IntelliJ IDEA

java编辑器有两种选择——IntelliJ IDEA和VsCode。其中IntelliJ IDEA现在是企业用的比较多的&#xff0c;是专门为java设计的&#xff0c;而VsCode则是通过插件来实现Java编辑的。 1.IntelliJ IDEA 官网下载链接&#xff1a;https://www.jetbrains.com/idea/ 注意选择社区版…

惠中科技化解光伏板清洁难题

惠中科技化解光伏板清洁难题 在绿色能源革命的浪潮中&#xff0c;光伏电站作为清洁能源的璀璨明珠&#xff0c;正以前所未有的速度照亮着能源转型的道路。然而&#xff0c;光伏板长期暴露于自然环境中&#xff0c;不可避免地遭受灰尘、鸟粪、油污等污染物的影响&#xff0c;让…

深入理解Redis(一)----Redis简介+Redis为什么这么快

一.Redis简介 Redis是一个开源的内存中的数据结构存储系统&#xff0c;它可以用作&#xff1a;数据库、缓存和消息中间件。 注&#xff1a;数据库的作用相当于MySQL&#xff0c;可以永久存储相关的数据&#xff0c;和MySQL不一样的是&#xff0c;Redis提供了多种数据基本数据类…

探索未知,悦享惊喜 —— 您的专属盲盒小程序,即将开启奇妙之旅

在这个充满无限可能的数字时代&#xff0c;每一次点击都可能是通往惊喜的门户。我们匠心打造的“惊喜盲盒”小程序&#xff0c;正是为了给您带来前所未有的娱乐体验与心灵触动。在这里&#xff0c;每一份盲盒都蕴藏着精心挑选的宝藏&#xff0c;等待着与您的不期而遇。 【探索…