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 ui(接口)介绍
Sep 17 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
Aug 01 Javascript
jQuery总体架构的理解分析
Mar 07 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
JavaScript基本编码模式小结
May 23 Javascript
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
Aug 07 Javascript
jquery交替变换颜色的三种方法 实例代码
Nov 19 Javascript
当某个文本框成为焦点时即清除文本框内容
Apr 28 Javascript
js canvas实现QQ拨打电话特效
May 10 Javascript
package.json文件配置详解
Jun 15 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
Aug 11 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
PHP Reflection API详解
2015/05/12 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
javascript 事件处理程序介绍
2012/06/27 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
用vue构建多页面应用的示例代码
2017/09/20 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
python二叉树的实现实例
2013/11/21 Python
深入理解Javascript中的this关键字
2015/03/27 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python2随机数列生成器简单实例
2017/09/04 Python
python 命令行传入参数实现解析
2019/08/30 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
QML用PathView实现轮播图
2020/06/03 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
应届生学校辅导员求职信
2013/11/07 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
北京故宫导游词
2015/01/31 职场文书
英文版辞职信
2015/02/28 职场文书
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS