一:同一项目中路由的跳转

mounted和created都只能执行一次,尝试监听改变的数据也未起效果,项目中使用了<keep-alive>,所以用activated监听初始函数

1.需要跳转的页面home.vue:   页面每次跳转时都改变参数,通过获取不同的时间来实现地址如:http://localhost:8080/#/noticeDetail?time=1641284450820

2.路由设置为不缓存上次的数据

{
path: "/noticeDetail",
name: "noticeDetail",
component: pages.noticeDetail,
meta: {
title: "公告信息",
code: "noticeDetail",
noCache:false
}
},

3.跳转目标页面noticeDetail.vue实现监听:

 activated(){ //项目使用了keep-alive,所以用activate监听才会再次刷新数据
this.init();//初始化页面
},

 二、从公共框架中跳转到同一个路由,直接用this.$router.push()的话因为是同一个页面会报错,并且页面数据也不更新

 

解决:1.解决页面报错 NavigationDuplicated: Avoided redundant navigation to current location: "/",原因是路由重复。 

在 router 文件夹下的 index.js 中加入下面代码,解决!

 const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}

 2.解决路由数据不刷新的问题:先判断当前路由是否是重复的路由,如果是的话就删掉重新加载并且再次reload()

 会有一个问题就是页面原先打开的所有的路由都关了  只保留了最后加载的这个路由,目前没找到好的解决办法

         const time = Date.now();
sessionStorage.setItem('noticeDetail',JSON.stringify(params));
// 先关闭当前页面再打开解决第二次打不开页面的问题
if(this.$route.name=="noticeDetail"){
this.store.delView(this.$route); //前面用inject引入store,所以可以这样写
this.$router.push({path:'/noticeDetail',query:{time}});
setTimeout(()=>{
location.reload();
},0)
}else{
this.$router.push({path:'/noticeDetail',query:{time}});
}

 针对第二种的优化方案:

 用watch监听路由,即使是不同项目之间的跳转也可以监听到路由的变化,之后再次调用接口实现页面刷新数据渲染

watch: {
$route(to) { // 先关闭当前页面再打开解决第二次打不开页面的问题
if (this.$route.name=='noticeDetail') { //noticeDetail为当前打开的这个页面的路由
// console.log("进来panduan");
this.init();//后续业务逻辑处理
}
}
},

  

最新文章

  1. [Q&amp;A] 应用程序清单生成失败
  2. PHPCMS开启伪静态和织梦开启伪静态的优缺点比较
  3. linux内核学习之六 进程创建过程学习
  4. 搭建测试环境——针对S3C6410开发板
  5. java之BASE64加解密
  6. nginx内置全局变量及含义
  7. Qt编程之对QGraphicsItem点击右键弹出菜单
  8. Git忽略对特定文件的跟踪和提交
  9. List泛型集合常用方法
  10. Bzoj 1936
  11. 传感器系列之4.12GPS定位传感器
  12. H5学习第二周
  13. Android 使用android-support-multidex解决Dex超出方法数的限制问题
  14. eslint 代码缩进 报错及解决
  15. 使用ACR122U NFC读卡器对M1卡进行读写操作(可以读写中文)
  16. TCP/IP 和 HTTP 的区别和联系是什么?
  17. linux journalctl 命令
  18. HDU.1536.S-Nim(博弈论 Nim)
  19. PyQT5速成教程-3 布局管理
  20. 2019.02.06 bzoj2187: fraction(类欧几里得)

热门文章

  1. RabbitMQ的使用介绍
  2. Cannot read property &#39;xxxx&#39; of null
  3. kubeSphere+kubernetes 集群更新证书
  4. Veeva_001常见问题总结
  5. Python爬取三国演义章节标题和内容(bs4爬取,解决中文乱码)
  6. oracle 索引操作
  7. vue资料链接
  8. 用JMeter对MySQL数据库进行压测
  9. 第三周day3
  10. 在windows上搭建spark遇到的问题