Vue监控路由/路由参数, 刷新当前页面数据的几种方法

news2024/12/26 10:45:29

目录

Vue监控路由

Vue中watch监控路由

Vue中watch监控路由的某一个参数

Vue中watch同时监控多个路由

刷新当前页面数据

location.reload

$router.go(0)

this.$router.resolve()与this.$router.resolve()

this.$router.resolve()

this.$router.push()

场景

往期相关优质推荐


Vue监控路由

Vue中watch监控路由

        如果你想要监控整个路由对象的变化,包括路由路径、参数、查询参数等的变化,可以使用`$route`对象进行监控。以下是一个使用`watch`监控整个路由对象的示例:

<template>
  <div>
    <!-- 显示监控的路由信息 -->
    <div>{{ monitoredRoute }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      monitoredRoute: null, // 用于存储监控的路由信息
    };
  },
  watch: {
    '$route'(newRoute) {
      this.monitoredRoute = newRoute; // 将新的路由信息保存到组件的monitoredRoute属性中
      // 执行其他操作或调用其他方法
    },
    //或
    $route(newRoute) {
      this.monitoredRoute = newRoute; // 将新的路由信息保存到组件的monitoredRoute属性中
      // 执行其他操作或调用其他方法
    },
  },
};
</script>

        在这个示例中,我们在组件的`data`选项中定义了一个`monitoredRoute`属性,用于存储监控的路由信息。在`watch`选项中,使用`'$route'`来指定要监控的路由对象。当路由发生变化时,`watch`函数会被触发,将新的路由信息保存到组件的`monitoredRoute`属性中。

你可以根据需要在`watch`函数中执行其他操作或调用其他方法,例如根据路由信息更新组件的状态、重新加载数据等。

请注意,上述示例中的`monitoredRoute`是一个示例属性名,你可以根据需要将其替换为你自己定义的属性名。

Vue中watch监控路由的某一个参数

在Vue中,可以使用`watch`选项来监控路由的某一个参数的变化。以下是一个使用`watch`监控路由参数的示例:

<template>
  <div>
    <!-- 显示监控的参数值 -->
    <div>{{ monitoredParam }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      monitoredParam: null, // 用于存储监控的参数值
    };
  },
  watch: {
    '$route.params.monitoredParam'(newValue) {
      this.monitoredParam = newValue; // 将新的参数值保存到组件的monitoredParam属性中
      // 执行其他操作或调用其他方法
    },
  },
};
</script>

在这个示例中,我们在组件的`data`选项中定义了一个`monitoredParam`属性,用于存储监控的参数值。在`watch`选项中,使用`'$route.params.monitoredParam'`来指定要监控的路由参数。当监控的参数发生变化时,`watch`函数会被触发,将新的参数值保存到组件的`monitoredParam`属性中。

你可以根据需要在`watch`函数中执行其他操作或调用其他方法,例如根据参数值更新组件的状态、重新加载数据等。

请注意,上述示例中的`monitoredParam`是一个示例参数名,你需要将其替换为你要监控的实际参数名。另外,如果你还需要监控其他路由参数,可以在`watch`选项中添加相应的监控函数。

Vue中watch同时监控多个路由

<template>
  <div>
    <!-- 显示监控的路由信息 -->
    <div>{{ monitoredRoute }}</div>
    <!-- 显示监控的参数值 -->
    <div>{{ monitoredParam }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      monitoredRoute: null, // 用于存储监控的路由信息
      monitoredParam: null, // 用于存储监控的参数值
    };
  },
  watch: {
    '$route'(newRoute) {
      this.monitoredRoute = newRoute; // 将新的路由信息保存到组件的monitoredRoute属性中
      // 执行其他操作或调用其他方法
    },
    '$route.params.monitoredParam'(newValue) {
      this.monitoredParam = newValue; // 将新的参数值保存到组件的monitoredParam属性中
      // 执行其他操作或调用其他方法
    },
  },
};
</script>

刷新当前页面数据

location.reload

在Vue.js中,可以使用`location.reload()`方法重新加载当前页面。这个方法会导致浏览器重新发送请求并重新加载页面。

要在Vue组件中使用`location.reload()`,可以在需要重新加载页面的地方调用该方法。例如,在一个按钮的点击事件处理程序中:

methods: {
  reloadPage() {
    location.reload();
  }
}

然后,在模板中使用这个方法:

<button @click="reloadPage">重新加载页面</button>

当用户点击按钮时,页面将会重新加载。

需要注意的是,`location.reload()`方法会导致页面完全重新加载,包括重新执行Vue实例的生命周期钩子函数。这可能会导致数据丢失,因为重新加载后,Vue实例将会被重置。

如果你只是想重新加载某个组件或重新获取数据,而不是整个页面,你可以考虑使用Vue的其他方法,如重新发起异步请求或重新设置组件的数据。

$router.go(0)

在Vue.js中,可以使用`$router.go()`方法进行路由导航。该方法用于在路由之间进行前进或后退操作。

`$router.go()`方法接受一个整数作为参数,表示前进或后退的步数。正数表示前进,负数表示后退。

下面是`$router.go()`方法的使用方法示例:

this.$router.go(-1);  // 后退+刷新;
this.$router.go(0);   // 刷新;
this.$router.go(1);   // 前进一步
this.$router.go(2);   // 前进两步
this.$router.go(n);   // 前进n个页面

你可以在Vue组件的方法中使用`$router.go()`方法来触发路由导航。例如,在一个按钮的点击事件处理程序中:

methods: {
  goForward() {
    this.$router.go(1);
  },
  goBack() {
    this.$router.go(-1);
  }
}

然后,在模板中使用这些方法:

<button @click="goForward">前进</button>
<button @click="goBack">后退</button>

当用户点击"前进"按钮时,将向前导航一步。当用户点击"后退"按钮时,将后退一步。

需要注意的是,`$router.go()`方法只能在使用Vue Router进行路由管理的应用程序中使用。如果你的应用程序没有配置Vue Router,或者当前路由没有前进或后退的历史记录,`$router.go()`方法可能不会产生任何效果。

this.$router.resolve()与this.$router.resolve()

`this.$router.resolve()`和`this.$router.push()`是Vue Router中的两个不同的方法,用于处理路由相关的操作,但它们有不同的作用和使用方式。

this.$router.resolve()

  • 作用:用于解析路由的相关信息,而不进行实际的导航操作。
  • 使用方式:接受一个路由路径作为参数,并返回一个Promise对象,该Promise对象包含解析后的路由信息。
  •  示例:
const resolvedRoute = this.$router.resolve('/example-route');
resolvedRoute.then(route => {
   // 处理解析后的路由信息
});

this.$router.push()

  • 作用:用于进行路由导航,将用户导航到指定的路由。
  • 使用方式:接受一个路由路径或一个描述路由的对象作为参数,进行实际的导航操作。
  • 示例:
// 导航到指定路由路径
this.$router.push('/example-route');
// 导航到带参数的路由
this.$router.push({ path: '/example-route', query: { id: 1 } });

使用`this.$router.resolve()`方法时,你可以获取解析后的路由信息,但它并不会触发实际的路由导航。而使用`this.$router.push()`方法时,会将用户导航到指定的路由路径或描述的路由对象。

因此,如果你只需要获取解析后的路由信息而不进行实际的导航操作,可以使用`this.$router.resolve()`方法。如果需要进行实际的路由导航,应该使用`this.$router.push()`方法。

场景

        比如一个页面需要有可能跳转到相同页面,  也可能跳转到不同页面, 为了体验更好,  可以综合情况判断使用那种刷新方式.

//页面类型变化直接
'$route.query.type'(newValue) {
	this.$router.push("/xx/yy_detail?type=0&id=" + row.id);
}

//相同页面相同数据但需要重新渲染(条件结合具体情况)
'$route.query.xx'(newValue) {
  this.$router.go(0);
}

//相同页面不同数据
'$route'(newValue) {
  this.init();
},

methods: {
    init(){
      this.detail();
      this.$refs["ppData"].flush(this.$route.query.id);
      this.$refs["fileData"].flush(this.$route.query.id);
      this.$refs["child3"].flush(this.$route.query.id);
      this.$refs["child4"].flush(this.$route.query.id);
      this.$refs["child5"].flush(this.$route.query.id);
      this.$refs["child6"].flush(this.$route.query.id);
    },
},

往期相关优质推荐

VSCode 最全实用插件(VIP典藏版)
Vue超详细整理(VIP典藏版)
Vue中created,mounted,updated详解
一文快速上手Echarts(持续更新)
Vue中el-table数据项扩展各种类型总结(持续更新)

有用请点赞,养成良好习惯!

疑问、交流、鼓励请留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对比接口测试工具在自动化测试优缺点:Jmeter、Python、Postman

一、JMeter 总结&#xff1a;适合对代码不敏感的使用人员&#xff0c;不会代码也可以完成接口自动化&#xff0c;设计框架。适合紧急迭代的项目。 JMeter接口测试的优势 小巧轻量级&#xff0c;并且开源免费&#xff0c;社区接受度高&#xff0c;比较容易入门支持多协议&…

混沌学院-亚朵酒店案例-观后随心谈

我在混沌学院翻阅目录时候&#xff0c;选择了亚朵酒店创始人王海军的案例视频作为第一次学习的目标&#xff0c;原因仅仅是因为偶尔一次入住亚朵酒店之后的亲切好感。当时我就想亚朵酒店的经营者一定很厉害。亚朵用一个相对低廉的价格&#xff0c;打造了极度干净和温馨的入住体…

探索互联世界的灯光艺术:FastLED库详细介绍及应用实例

感谢太极创客提供素材 FastLED库-太极创客 太极创客B站视频 文章目录 基础程序为单一灯赋值fill_solid( 目标, 填充数, 颜色) – 将LED光带设置为同一颜色fill_rainbow(目标, 填充数, 开始颜色, 色差)– 将LED光带设置为渐变彩虹色fill_gradient_RGB(目标, 开始位置, 开始颜色…

CSS box-shadow阴影

1、语法 box-shadow: h-shadow v-shadow blur spread color inset; 值描述h-shadow必需的。水平阴影的位置。允许负值v-shadow必需的。垂直阴影的位置。允许负值blur可选。模糊距离spread可选。阴影的大小color可选。阴影的颜色。在CSS颜色值寻找颜色值的完整列表inset可选。…

使用 Sealos 构建低成本、高效能的私有云

这个时候谈论私有云似乎有点反直觉&#xff1f;大部分人认知不是上云是大趋势嘛&#xff1f;我也比较认可上云&#xff0c;不过私有云也是云&#xff0c;今天给大家带来一个新的选择 —— 用云&#xff0c;只需一个 Sealos 就够了。 看看我们怎么做到更低的成本&#xff0c;更…

亚马逊美国站自行车电动自行车儿童自行车的合规认证GCC+UL2849

GCC合规性认证16CFR1512和 UL 2849 随着道路变得更加拥挤&#xff0c;停车位的减少&#xff0c;骑自行车上班已成为一种不错的选择。它不仅为骑手提供体育锻炼&#xff0c;还为骑手提供了更为灵活的通勤&#xff0c;因此更加轻便的电动助力自行车应运而生。需求不断增长&…

信息检索与数据挖掘 | (三)容错式检索

文章目录 &#x1f4da;通配符查询&#x1f407;单个通配符查询&#x1f407;一般的通配符查询&#x1f407;k-gram 索引 &#x1f4da;拼写校正&#x1f407;词项独立的校正方法&#x1f955;编辑距离方法&#x1f955;k-gram重合度法 &#x1f407;上下文敏感的校正方法 &…

Excel实现只针对某项字符第一次出现的位置分列

取第一次出现左边数值 B1LEFT(A1,SEARCH(".",A1)-1) 取第一次出现右边数值 C1RIGHT(A1,LEN(A1)-SEARCH(".",A1)) 公式如图&#xff1a;

MySQL(7) Innodb 原理和日志

一、MySQL结构 客户端 server层 查询缓存&#xff08;5.7&#xff09; 连接器 分析器 优化器 执行器 引擎层 二、一条update操作mysql的流程 三、MySQL的日志 &#xff08;1&#xff09;redo log 保证MySQL 持久性的关键&#xff0c;如果MySQL宕机&#xff0c;buffer pool…

学会这一招,轻松玩转 app 中混合应用自动化测试

♥ 前 言 现在的 app 中越来越多的页面通过 H5 来做了&#xff0c;理由很简单&#xff0c;不需要升级 app 就能让用户使用新的功能。这就苦了我们测试工程师了&#xff0c;混合应用自动化不会玩。今天咱们来聊一聊 app 中混合应用自动化怎么做。 一、环境准备 appium1.21.0…

虹科案例 | 虹科PLC助力纯水冷却机实现精准温度控制

文章来源&#xff1a;虹科工业控制事业部 点击阅读原文&#xff1a;https://mp.weixin.qq.com/s/3gv4M82YhDHCo_cq78EanA 案例概况 客户&#xff1a;Efficient Energy 应用&#xff1a;纯水冷却机 &#xff08;一&#xff09;应用背景 制冷技术在许多不同行业中得到广泛应用&…

仿射变换案例

1.什么是仿射变换 仿射变换(Affine Transformation)其实是另外两种简单变换的叠加:一个是线性变换,一个是平移变换 仿射变换变化包括缩放(Scale、平移(transform)、旋转(rotate)、反射(reflection,对图形照镜子)、错切(shear mapping,感觉像是一个图形的倒影),原来的…

深入理解 pytest.main():Python 测试框架的核心功能解析

前言 笔者平常运行pytest用例时&#xff0c;通常使用命令行方式&#xff0c;像这样 pytest -v pxl/test_dir/test_demo.py::TestDemo::test_my_var&#xff0c;执行某一条case&#xff0c;但每次命令行敲也挺麻烦的。那如何在python代码中调用pytest呢&#xff1f;带着疑问一…

github搜索技巧

指定语言 language:java 比如我要找用java写的含有blog的内容 搜索项目名称包含关键词的内容 vue in:name 其他如项目描述跟项目文档&#xff0c;如下 组合使用 vue in:name,description,readme 根据Star 或者fork的数量来查找 总结 springboot vue stars:>1000 p…

记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章

一、前言 项目以前签字都是由C端那边进行合成操作&#xff0c;最近项目要求把那块功能&#xff0c;由后端进行实现&#xff0c;其中包含坐标、关键字、任意位置进行签字操作&#xff0c;坐标是最容易实现的&#xff0c;曾经也写过类似的功能在&#xff08;添加图片印章到PDF&a…

解锁工业 4.0 元宇宙:AR/VR、AI 和 3D 技术如何为下一次工业革命提供动力

原创 | 文 BFT机器人 沉浸式混合现实和由虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;组成的扩展现实技术仍然是业务创新和扩张的关键驱动因素。通过改变公司的运营、与客户互动和实现目标的方式&#xff0c;这一技术解决方案集已在多个行业产生了…

认证-authentication 和授权-authorization

就好比你可以刷卡进去xxx大厦&#xff08;认证是本公司职员&#xff09;&#xff0c;但无法刷卡进入金融部门&#xff0c;或 实验部门&#xff08;因为没有授权&#xff09;

无线通信——Mesh自组网特点

Mesh&#xff0c;它的中文叫作无线网格状网络。作为当下最为灵活、高效、便捷的扩大信号覆盖的通信解决方案之一&#xff0c;Mesh组网得到了极大推广。其主要应用于&#xff1a;&#xff08;无人机/车/船、特种机器人、巡检、应急安防&#xff08;如城市应急、抢险救援、城区覆…

蜜雪冰城涨价怒赞无数 雪王张红超卷出一条阳道

作者&#xff1a;积溪 简评&#xff1a;最近雪王涨价一元登上了热搜&#xff0c;但评论区却是一片和谐&#xff0c;雪王的魅力究竟是如何养成的&#xff1f;#蜜雪冰城 #雪王 #张红超 #奶茶 别的品牌涨价&#xff0c;只有吐槽声一片&#xff1b;但它涨价&#xff0c;却是网友们…

如何在前端项目中管理依赖关系?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用包管理工具⭐ 使用版本控制系统⭐ 使用依赖管理工具⭐ 使用CDN⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对W…