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

针对“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日

相关文章

  • Vue中map()的用法案例

    下面是关于“Vue中map()的用法案例”的完整攻略。 什么是map()函数 map()函数是JavaScript中的一个方法,它可以在一个数组上调用,返回一个新的数组。这个方法作用于数组的每一项来创建一个新的值。Vue中的map()函数也和JavaScript中的map()函数相似,但是它适用于Vue组件中的一个对象数组。 Vue中map()函数的用法 在…

    Vue 2023年5月28日
    00
  • 一篇文章总结Vue3.2语法糖使用

    一篇文章总结Vue3.2语法糖使用 简介 Vue.js是一款流行的前端JavaScript框架,而Vue 3是其最新版本,其中引入了一些方便开发的新特性,即语法糖。本篇文章将讲解Vue3.2语法糖的使用方法。 defineComponent函数 在Vue3中,我们可以使用defineComponent函数定义组件,它可以让代码更加简洁明了。下面是一个使用de…

    Vue 2023年5月27日
    00
  • VUE如何利用vue-print-nb实现打印功能详解

    “vue-print-nb”是基于Vue.js的一个打印插件,它可以实现在网页上打印页面的功能。下面将详细讲解如何利用“vue-print-nb”实现打印功能,过程中将展示两个示例。 安装vue-print-nb 首先,在Vue项目中通过npm安装vue-print-nb。 npm install vue-print-nb –save 引入vue-prin…

    Vue 2023年5月27日
    00
  • Vue 实现双向绑定的四种方法

    当我们用Vue框架去编写一个前端应用时,往往需要实现双向绑定,这是Vue框架最重要的特性之一。Vue实现双向绑定的方式有很多,下面将详细讲解四种方法的具体实现过程和示例。 1. Object.defineProperty Object.defineProperty是一种实现双向绑定的最基础的方法,这种方法适用于所有支持ECMAScript5的浏览器。 实现双…

    Vue 2023年5月28日
    00
  • vue-cli创建的项目中的gitHooks原理解析

    首先,讲解“vue-cli创建的项目中的gitHooks原理解析”需要了解以下几个概念: git hooks:是一种在特定事件发生时,Git 自动执行脚本的机制,可以用它来自定义钩子函数,在 Git 事件发生时触发执行。 vue-cli:是一个脚手架工具,用于快速创建 Vue 项目,提供了一系列的预设配置,可以快速搭建 Vue 项目的基本框架。 husky:…

    Vue 2023年5月29日
    00
  • vue中使用vant的Toast轻提示报错的解决

    下面是针对“vue中使用vant的Toast轻提示报错的解决”的完整攻略。 问题描述 在Vue中使用Vant库中的Toast轻提示,出现了如下报错信息: TypeError: _this.$toast is not a function 问题原因 该错误的原因是缺少Toast组件的引入。在代码中我们尝试调用this.$toast,但由于没有引入对应的组件,所…

    Vue 2023年5月28日
    00
  • el-form-renderer使用教程

    El Form Renderer 使用教程 简介 el-form-renderer 是一款基于 ElementUI 组件库的渲染器,可以根据配置动态生成表单。本文将详细讲解如何使用 el-form-renderer。 安装 可以通过 npm 或 yarn 进行安装: npm install el-form-renderer –save yarn add e…

    Vue 2023年5月28日
    00
  • Vue+ElementUI项目使用webpack输出MPA的方法

    Vue和ElementUI是目前非常流行的前端框架,webpack是常用的前端构建工具,能够输出MPA(多页应用)有助于提高前端页面的加载速度和SEO效果。下面是使用webpack输出MPA的步骤: 一、安装Webpack和一些必要的插件 npm install webpack webpack-cli html-webpack-plugin extract-…

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