Vue监控路由与路由参数, 刷新当前页面数据的方法汇总

 更新时间:2023年10月19日 10:01:41   作者:慕白Lee  
这篇文章主要介绍了Vue监控路由与路由参数, 刷新当前页面数据的几种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

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);
    },
},

到此这篇关于Vue监控路由与路由参数, 刷新当前页面数据的几种方法的文章就介绍到这了,更多相关Vue监控路由与路由参数, 刷新当前页面数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue 2.0+Vue-router构建一个简单的单页应用(附源码)

    Vue 2.0+Vue-router构建一个简单的单页应用(附源码)

    这篇文章主要给大家介绍了基于Vue 2.0+Vue-router构建了一个简单的单页应用,文中通过实例介绍的非常详细,并在文末给出了源码下载,需要的朋友可以下载学习参考,下面来一起看看吧。
    2017-03-03
  • vue2.x中$attrs的使用方法教程

    vue2.x中$attrs的使用方法教程

    正常情况下Vue推荐用props向子组件参数,但是在特定场景下,使用$attrs会更方便,下面这篇文章主要给大家介绍了关于vue2.x中$attrs使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Vue 禁用浏览器的前进后退操作

    Vue 禁用浏览器的前进后退操作

    这篇文章主要介绍了Vue 禁用浏览器的前进后退操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Vue动态创建注册component的实例代码

    Vue动态创建注册component的实例代码

    这篇文章主要给大家介绍了关于Vue动态创建注册component的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Vue Element前端应用开发之功能点管理及权限控制

    Vue Element前端应用开发之功能点管理及权限控制

    在一个业务管理系统中,如果我们需要实现权限控制功能,我们需要定义好对应的权限功能点,然后在界面中对界面元素的功能点进行绑定,这样就可以在后台动态分配权限进行动态控制了,权限功能点是针对角色进行控制的,也就是简称RBAC(Role Based Access Control)。
    2021-05-05
  • 使用vue-cli3新建一个项目并写好基本配置(推荐)

    使用vue-cli3新建一个项目并写好基本配置(推荐)

    这篇文章主要介绍了使用vue-cli3新建一个项目并写好基本配置的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • vue+canvas绘制时间轴的方法

    vue+canvas绘制时间轴的方法

    这篇文章主要为大家详细介绍了vue+canvas绘制时间轴的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue第一次获取不到元素的解决方法记录

    vue第一次获取不到元素的解决方法记录

    Vue.js虽然说是数据驱动页面的,但是有时候我们也要获取dom对象进行一些操作。这篇文章主要给大家介绍了关于vue第一次获取不到元素的解决方法,需要的朋友可以参考下
    2021-06-06
  • 解决vue项目本地启动时无法携带cookie的问题

    解决vue项目本地启动时无法携带cookie的问题

    这篇文章主要介绍了解决vue项目本地启动时无法携带cookie,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 手把手教你如何将html模板资源转为vuecli项目

    手把手教你如何将html模板资源转为vuecli项目

    Vue可以直接集成html,Vue就是前端框架,使用Vue做前端开发效率非常高,下面这篇文章主要给大家介绍了关于如何将html模板资源转为vuecli项目的相关资料,需要的朋友可以参考下
    2023-04-04

最新评论