vue在App.vue文件中监听路由变化刷新页面操作


Posted in Javascript onAugust 14, 2020

在路由跳转时,会出现页面需要重新刷新一遍才能获取数据加载页面,这时添加一个监听器,如果跳转到页面刷新一次。

export default {
 name: 'App',
 provide(){
 return{
  reload:this.reload
 }
 },
 data(){
 return {
  isRouterAlive:true,
 }
 },
 //监听器
 watch: {
 // 方法1
 '$route' (to, from) { //监听路由是否变化
  // console.log(999)
  if(to.path == "/"){ //跳转到哪个页面
  location.reload()
  }
 },
 },
 methods:{
 reload(){
  this.isRouterAlive = false;
  this.$nextTick(function () {
  this.isRouterAlive = true
  });
 },
 },
}

补充知识:vue监听路由的改变和监听页面的刷新与离开

要分清两者的区别。

首先是监听页面的刷新与离开,此时相当于直接在这个网页中按了刷新,如果是webapp则是离开这个app而不是切换路由!

如果是用js的特性监测,则是不仅可以页面的刷新与离开,还能切换路由。注意当keepalive时即使切换了路由也无效。

在script中直接增加监听器监视beforeunload:

//监视如果页面离开
    created() {
      window.addEventListener('beforeunload', this.updateHandler)
    },
    beforeDestroy() {
      this.finalItemDetail(); // 自己要进行的操作
    },
    destroyed() {
      window.removeEventListener('beforeunload', this.updateHandler)
    },

然后methods中添加finalItemDetail和updateHandler方法:

updateHandler() {
        this.finalItemDetail()
      },
      finalItemDetail() {
        console.log('刷新或关闭');
      },

如果想监听某个特定的页面的离开,比如我现在在/index下,现在去了/index/001下面,就可以在watch中监听路由的变化,前提是实用vue-router。

如果是简单的判断路由变化可以用注释掉的,直接执行clear方法(自己定义在methods中)

但是注意这个只能监听自己子路由的变化!

watch: {
      // 如果路由有变化,会再次执行clear方法
      // "$route": "clear",
      $route(to , from){
        console.log( to.path, from.path );
        this.clear(to.path);
      }
    },

然后我还额外做了个判断:

clear(path) {
        if(path!="/item/item01/evaluate")
          console.log("从这个页面离开了");
        this. active=0;
      },

以上这篇vue在App.vue文件中监听路由变化刷新页面操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery入门问答 整理的几个常见的初学者问题
Feb 22 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
Feb 27 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
Aug 14 Javascript
js实现文章文字大小字号功能完整实例
Nov 01 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
JS从一组数据中找到指定的单条数据的方法
Jun 02 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
Aug 05 Javascript
纯JS实现可拖拽表单的简单实例
Sep 02 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
Jun 09 Javascript
React应用中使用Bootstrap的方法
Aug 15 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 #Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 #Javascript
JS+css3实现幻灯片轮播图
Aug 14 #Javascript
浅谈vue获得后台数据无法显示到table上面的坑
Aug 13 #Javascript
vue 解决data中定义图片相对路径页面不显示的问题
Aug 13 #Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
Aug 13 #Javascript
vue用elementui写form表单时,在label里添加空格操作
Aug 13 #Javascript
You might like
世界第一个无线广播电台 KDKA
2021/03/01 无线电
SONY ICF-SW55的电路分析
2021/03/02 无线电
图形数字验证代码
2006/10/09 PHP
PHP 中的批处理的实现
2007/06/14 PHP
PHP多个版本的分析解释
2011/07/21 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
linux安装python修改默认python版本方法
2019/03/31 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
成人教育自我鉴定
2013/11/01 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
写给老师的保证书
2015/05/09 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
小学班级标语口号大全
2015/12/26 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript