vue实现路由监听和参数监听

yizhihongxing

针对“vue实现路由监听和参数监听”的问题,我提供以下完整攻略。

路由监听

Vue中实现路由监听,我们可以借助Vue-router提供的钩子函数,主要是监听路由的变化。通过路由对象$route的监控,可以获取当前路由相关信息(如:路由路径,路由参数,路由组件等),具体如下:

1.使用官方提供的beforeEach和afterEach全局路由钩子

在路由文件(router.js)中引入Vue-router库,在router.beforeEachrouter.afterEach中添加对路由的监控。例如:

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)

const router = new Router({
  routes: [
    { path: '/', component: Hello },
    { path: '/about/:id', component: About }
  ]
})

//全局前置守卫,路由切换前调用
router.beforeEach((to, from, next) => {
  console.log('开始进入路由,from:', from.fullPath, ' to:', to.fullPath);
  next();
});

//全局后置钩子,路由切换后调用
router.afterEach((to, from) => {
  console.log('路由跳转结束,from:', from.fullPath, ' to:', to.fullPath);
});

示例

<template>
  <div>
    <router-link :to="{path:'/about',query:{id:1}}">1</router-link>
    <router-link :to="{path:'/about',query:{id:2}}">2</router-link>
  </div>
</template>
<script>
  export default {
    name: 'about',
    mounted () {
      this.$router.beforeEach((to, from, next) => {
        console.log('before each');
        next();
      });
      this.$router.afterEach((to, from) => {
        console.log('after each');
      });
    }
  }
</script>

2.使用vue-router自带的watch监听$route对象

如果只需要监听$route对象的变化时,我们可以使用vue-router自带的watch属性进行监听,监控路由的变化。

<script>
  export default {
    name: 'demo',
    watch: {
      '$route': function(to, from) {
        console.log('route path change', to.path, '\nquery:', to.query, '\nhash:', to.hash);
      }
    }
  }
</script>

参数监听

监听参数值的变化即可。我们可以借助Vue自带的watch优化这个过程。例如:

<template>
  <div>
    <input v-model="msg">
    <input v-model="subMsg">
  </div>
</template>
<script>
  export default {
    name: 'about',
    data () {
      return {
        msg: '',
        subMsg: ''
      }
    },
    watch: {
      msg (newVal, oldVal) {
        console.log(newVal);
      },
     subMsg (newVal, oldVal) {
        console.log(newVal);
      }
    }
  }
  </script>

当HTML input的值发生变化时,watch可以自动监测到,然后执行相应的函数。需要注意的是,我们定义在data中的字段也一定要先初始化,否则watch函数会直接抛出异常,无法执行到。

以上,就是关于“vue实现路由监听和参数监听”的完整攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现路由监听和参数监听 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Pinia入门学习之实现简单的用户状态管理

    首先,我们需要了解什么是Pinia。Pinia是一款为Vue 3提供状态管理的插件,它是基于Vue 3 Reactivity API协议实现的,提供了强大的响应式状态管理功能,使得在Vue 3项目开发中可以更方便地进行状态管理。 下面,我们来详细讲解如何使用Pinia来实现简单的用户状态管理。步骤如下: 1. 安装Pinia 在Vue 3项目中,首先需要安装…

    Vue 2023年5月28日
    00
  • 详解vue-cli项目在IE浏览器打开报错解决方法

    当使用vue-cli创建的项目在IE浏览器中打开时,可能会遇到Object doesn’t support property or method ‘assign’或Promise未定义等错误。这是因为IE浏览器不支持ES6(ES2015)新特性,而vue-cli默认使用的是ES6语法并使用了一些ES6新特性,这对于IE浏览器来说是无法正确识别的。 下面是解决…

    Vue 2023年5月27日
    00
  • 原生JS实现的自动轮播图功能详解

    “原生JS实现的自动轮播图功能详解”可以通过以下步骤实现: 1. 创建轮播图的html结构 在HTML文件中创建轮播图的结构,并给每一张图片设置一个唯一的编号作为id,以便在JS中引用。 例如,创建一个将包括5张照片的轮播器,结构如下: <div class="slider"> <img id="slide1&…

    Vue 2023年5月28日
    00
  • TypeScript类型声明书写详解

    TypeScript类型声明书写详解 在使用TypeScript开发时,类型声明是一种非常重要的工具,它可以帮助我们检查代码中的类型错误,并提供代码补全的功能,提高开发效率。本文将详细讲解TypeScript类型声明的书写方法,帮助读者能够更加熟练地使用TypeScript进行开发。 简单类型声明 在TypeScript中,我们可以使用“:`符号来定义变量的…

    Vue 2023年5月27日
    00
  • Vue实现数据表格合并列rowspan效果

    下面是Vue实现数据表格合并列rowspan的攻略: 一、准备工作 安装Vue.js和引入外部表格插件element-ui。 准备好需要展示的表格数据。 二、实现合并功能 实现合并的核心是在表格渲染之后,对表格单元格进行合并操作。可以通过计算表格中相邻单元格的值是否相同来实现合并,如果相同,则将当前单元格上下跨度设置为0,否则就将上一次开始合并的单元格的跨度…

    Vue 2023年5月27日
    00
  • Vue生命周期详解

    Vue生命周期详解 Vue.js 是一个 MVVM 框架,在组件渲染过程中,每个组件都有自己的生命周期。这里将详细介绍 Vue 组件的生命周期函数。 Vue 组件生命周期可以分为四个阶段: 创建阶段 create 挂载阶段 mount 更新阶段 update 销毁阶段 destroy 创建阶段 create 在创建阶段,Vue 组件将从组件配置对象的初始化属…

    Vue 2023年5月28日
    00
  • Vue.js如何获取data-*的值

    当我们需要在 Vue.js 中获取 HTML 标签上的 data-* 属性值时,我们可以通过以下两种方式实现: 方式一:在模板中使用 我们可以在 HTML 模板中使用 v-bind 指令或简写的 : 符号将 data-* 属性值绑定到 Vue.js 实例的数据对象中,然后通过数据对象的属性获取值。 HTML 模板代码: <div id="ap…

    Vue 2023年5月27日
    00
  • Vue自定义Form组件实现方法介绍

    下面详细讲解“Vue自定义Form组件实现方法介绍”的完整攻略。 什么是自定义Form组件? 自定义Form组件是指,开发者可以使用Vue框架中提供的组件相关API自己封装一个表单组件,以便于实现业务需求。这种自定义Form组件可以根据不同的业务需求来进行设计,而且重用率非常高,可以减少重复的代码。 实现方法 实现Vue自定义Form组件的方法如下: 1.编…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部