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

news2024/11/26 5:43:18

目录

一、Vue监控路由

1、Vue中watch监控路由

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

3、Vue中watch同时监控多个路由

二、刷新当前页面数据

1、location.reload

2、$router.go(0)

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

a、this.$router.resolve()

b、this.$router.push()

三、示例场景

四、往期相关优质推荐


Vue官网Element官网

一、Vue监控路由

1、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`是一个示例属性名,你可以根据需要将其替换为你自己定义的属性名。

2、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`选项中添加相应的监控函数。

3、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>

二、刷新当前页面数据

1、location.reload

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

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

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

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

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

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

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

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

2、$router.go(0)

        在Vue.js中,可以使用`$router.go()`方法进行路由导航。该方法用于在路由之间进行前进或后退操作。`$router.go()`方法接受一个整数作为参数,表示前进或后退的步数。正数表示前进,负数表示后退。

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

序号代码释义
1this.$router.go(-1);  // 后退+刷新;
2this.$router.go(0);   // 刷新;
3this.$router.go(1);   // 前进一步
4this.$router.go(2);   // 前进两步
5this.$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()`方法可能不会产生任何效果。

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

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

a、this.$router.resolve()

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

b、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/1049395.html

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

相关文章

leetcode1610. 可见点的最大数目(java)

可见点的最大数目 题目描述滑动窗口 题目描述 难度 - 困难 leetcode1610. 可见点的最大数目 给你一个点数组 points 和一个表示角度的整数 angle &#xff0c;你的位置是 location &#xff0c;其中 location [posx, posy] 且 points[i] [xi, yi] 都表示 X-Y 平面上的整数坐标…

网络层五大核心知识点

引言 在前面几期文章中&#xff0c;无论是UDP还是TCP&#xff0c;其实我们都在介绍 TCP/IP 模型的“传输层”&#xff0c;我们知道&#xff0c;数据在传输层完成相应的封装后就会来到网络层进行下一步的数据转发&#xff0c;那么数据在网络层又接受了哪些神秘的力量&#xff1…

心法利器[102] | 大模型落地应用架构的一种模式

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会&#xff0c;与大家一起成长。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2022年新一版的文章合集已经发布&#xff0c;累计已经60w字了&#xff0c;获取方式看这里&…

SAP替代物料的解决方案详解

说明&#xff1a; SAP中的替代有三种&#xff1a; A物料和B物料可以互相替代&#xff0c;但是由物料计划部门自由控制使用A还是使用B;在某个产品中&#xff0c;当物料A不够时&#xff0c;才用B&#xff1b;当物料A用完后&#xff0c;将永远不再用&#xff0c;而是用物料B取代A…

CYEZ 模拟赛 7

A 弹珠 妙妙题。 先每个组分一个小球。等价于 n − k n-k n−k 拆分为任意个 [ 1 , k ] [1,k] [1,k] 的数的方案数。 本质是根据面积的转换&#xff0c;直观解释&#xff1a; 完全背包即可。代码。 B C 总结

机器人制作开源方案 | 家庭清扫拾物机器人

作者&#xff1a;罗诚、李旭洋、胡旭、符粒楷 单位&#xff1a;南昌交通学院 人工智能学院 指导老师&#xff1a;揭吁菡 在家庭中我们有时无法到一些低矮阴暗的地方进行探索&#xff0c;比如茶几下或者床底下&#xff0c;特别是在部分家庭中&#xff0c;如果没有及时对这些阴…

设计加速!11个Adobe XD插件推荐!

你是否一直在寻找可以提升 Adobe XD 工作流程和体验的方法&#xff1f;如果是&#xff0c;一定要试试这些 Adobe XD 插件&#xff01;本文将介绍 11 款好用的 Adobe XD 插件&#xff0c;这些插件可以为 UI/UX 设计添加很酷的新功能&#xff0c;极大提升你的工作效率和产出。让我…

Linux 常用基本命令

1.走近Linux系统 开机登录 开机会启动许多程序。它们在Windows叫做"服务"&#xff08;service&#xff09;&#xff0c;在Linux就叫做"守护进程"&#xff08;daemon&#xff09;。 关机 在linux领域内大多用在服务器上&#xff0c;很少遇到关机的操作。毕竟…

大模型深挖数据要素价值:算法、算力之后,存储载体价值凸显

文 | 智能相对论 作者 | 叶远风 18.8万亿美元&#xff0c;这是市场预计2030年AI推动智能经济可产生的价值总和&#xff0c;其中大模型带来的AI能力质变无疑成为重要的推动力量。 大模型浪潮下&#xff0c;业界对AI发展的三驾马车——算力、算法、数据任何一个维度的关注都到…

23 mysql index 查询

前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…

ubuntu 20 安装 CUDA

1. 查看需要安装的cuda版本 nvidia-smi cuda的版本信息如下图所示 2. 去官网下载对应版本的CUDA 官网&#xff1a;CUDA Toolkit Archive | NVIDIA Developer 弹出以下界面&#xff0c;依次点击以下按钮 得到以下内容&#xff1a; 复制下载链接&#xff0c;下载cuda11到本…

适用于 ONLYOFFICE 的智谱 AI 插件现已发布

很高兴向您介绍智谱 AI 插件&#xff0c;现已在我们的插件市场上线&#xff01;它是开源之夏 (OSPP) 计划的成果&#xff0c;由专注投入的参与者林剑波同学开发。智谱 AI 实质上与 ChatGPT 插件功能相同&#xff0c;但它是为与中国的 AI 无缝协作而量身打造。 关于智谱 AI 这款…

Linux系统编程(1)

父子进程通过两个管道进行通信。 伪代码 #include <unistd.h> void client(int, int), server(int, int);int main(int argc, char** argv) {int pipe1[2], pipe2[2];pid_t childpid;Pipe(pipe1);Pipe(pipe2);if ((childpid Fork()) 0) {// childClose(pipe1[1]);Close…

LeetCode 盛最多水的容器 双指针

原题链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题面&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与…

uni-app:canvas-绘制图形2

效果 代码 <template><view><!-- 创建了一个宽度为300像素&#xff0c;高度为200像素的canvas元素。canvas-id属性被设置为"firstCanvas"&#xff0c;可以用来在JavaScript中获取该canvas元素的上下文对象。 --><canvas style"width:200px…

NPDP和PMP证书有啥区别?建议考哪个?

最近分享了很多项目经理和产品经理的问题&#xff0c;有宝子疑问关于这两个职位最热门的证书——PMP和NPDP究竟有什么区别&#xff1f;如何判断自己应该选择哪个&#xff1f;今天胖圆从证书性质&#xff0c;适合人群以及相关考试信息来给大家解读一下&#xff0c;两者有什么不同…

魔兽世界安装插件后进游戏闪退的一个原因。

最近体验了几个私服的WOW&#xff0c;在找插件的时候&#xff0c;总是会遇到wow群里老哥问一个经典的插件问题&#xff0c;进游戏后提示The user interface is using more than 48MB of memory.Set Script Memory to 0 in the character selection screen;然后有个倒计时&#…

(windows10)设置环境变量简化EVOSUITE的运行

对于可执行的jar evosuite-1.1.0.jar&#xff0c;可以在命令行使用jave -jar执行它 然而&#xff0c;每次进入到jar包所在的目录&#xff0c;有点繁琐&#xff0c;这个命令看上去也有点点长。 那么我们可以设置环境变量EVOSUITE来取代这个命令&#xff0c;也即 set EVOSUITEja…

飞致云开源社区月度动态报告(2023年9月)

自2023年6月起&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…

顺序读写函数的介绍:fread fwrite

目录 函数介绍&#xff1a; fwrite&#xff1a; 参数说明&#xff1a; 函数大意&#xff1a; 举例&#xff1a; 文件效果&#xff1a; fread&#xff1a; 函数大意&#xff1a; 举例&#xff1a; 结果展示&#xff1a; 函数介绍&#xff1a; fwrite&#xff1a; 参数说明…