首页 > 其他分享 >vue Router的原理及传参方法

vue Router的原理及传参方法

时间:2023-06-12 13:22:04浏览次数:60  
标签:传参 vue URL route Vue 跳转 Router 路由

Vue Router 是 Vue.js 官方的路由管理器,它和 Vue.js 的核心深度集成,可以非常方便地实现单页面应用程序(SPA)的路由功能。Vue Router 的原理主要是通过监听 URL 的变化,根据不同的 URL 显示不同的组件,从而实现页面的切换和跳转。
具体来说,Vue Router 的原理包括以下几个方面:

  1. 路由配置:在 Vue Router 中,我们需要先定义路由配置,即将 URL 和组件进行映射。路由配置可以通过一个数组或者一个对象来定义,其中每个路由都包含一个路径和一个组件。
    2.路由匹配:当 URL 发生变化时,Vue Router 会根据路由配置进行路由匹配,找到与当前 URL 匹配的路由记录。路由匹配的过程是从上到下依次匹配,直到找到第一个匹配的路由记录。
  2. 路由跳转:当路由匹配成功后,Vue Router 会根据路由记录中定义的组件来渲染页面。同时,Vue Router 还提供了一些方法和钩子函数,可以在路由跳转前、跳转后或者路由变化时进行一些操作,比如验证用户权限、获取数据等。
  3. 路由模式:Vue Router 支持两种路由模式,即 hash 模式和 history 模式。在 hash 模式下,URL 中会带有 # 符号,而在 history 模式下,URL 不会带有 # 符号。两种模式的原理略有不同,但都可以实现单页面应用程序的路由功能。

总的来说,Vue Router 的原理比较简单,主要是通过路由配置、路由匹配和路由跳转来实现页面的切换和跳转。同时,Vue Router 还提供了一些高级功能,比如路由懒加载、路由嵌套等,可以帮助我们更好地管理和组织应用程序的路由。

路由传参

  1. Query路由传参

编程式导航 使用router push 或者 replace 的时候 改为对象形式新增query 必须传入一个对象

const toDetail = (item: Item) => {
    router.push({
        path: '/reg',
        query: item
    })
}

接受参数
使用 useRoute 的 query

import { useRoute } from 'vue-router';
const route = useRoute()
 <div>品牌:{{ route.query?.name }}</div>
 <div>价格:{{ route.query?.price }}</div>
 <div>ID:{{ route.query?.id }}</div>

2.Params路由传参
编程式导航 使用router push 或者 replace 的时候 改为对象形式并且只能使用name,path无效,然后传入params

const toDetail = (item: Item) => {
    router.push({
        name: 'Reg',
        params: item
    })
}

接受参数
使用 useRoute 的 params

import { useRoute } from 'vue-router';
const route = useRoute()
<div>品牌:{{ route.params?.name }}</div>
<div>价格:{{ route.params?.price }}</div>
<div>ID:{{ route.params?.id }}</div>

标签:传参,vue,URL,route,Vue,跳转,Router,路由
From: https://www.cnblogs.com/DTCLOUD/p/17474772.html

相关文章

  • Vue考试复习
    App.vue<scriptsetup>importHelloWorldfrom'./components/HelloWorld.vue'importLoginfrom'./components/Login.vue'//importCalcfrom'./components/Calc.vue'//importShoppingCartfrom'./components/ShoppingC......
  • Java用命令行给main方法传参
    Java用命令行给main方法传参1.cd到当前程序的src路径下。2.编译文件,我的文件是在com.test包下。javaccom/test/Demo.java3.给main方法传值。javacom/test/Demo.java123Dowhatyouthinkisright做你认为正确的事......
  • springboot+vue留守儿童爱心网站,附源码+数据库+论文+PPT,远程包安装运行
    1、项目介绍留守儿童爱心网站采用了B/S结构,JAVA作为开发语言,数据库采用了B/S结构,Mysql数据库进行开发。该系统包括前台操作,后台由管理员和用户两个部分,一方面,为用户提供首页、宣传新闻、志愿活动、爱心捐赠、个人中心、后台管理等功能;另一方面,为管理员提供首页、个人中心、用户管......
  • 前端 vue 自定义导航栏组件高度及返回箭头 自定义 tabbar 图标
    前端vue自定义导航栏组件高度及返回箭头自定义tabbar图标,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12986效果图如下:使用方法//page.json采用矢量图标设置返回箭头,{"path":"pages/Home/Home",......
  • 掌握Vue生命周期,让你的前端开发效率翻倍!
    1Vue实例<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Vue实例</title><scriptsrc='../vue.js'></script></head><body><......
  • Vue3.js第一部分【核心篇】
    Vue3Vue核心Vue3快速上手​1.Vue3简介2020年9月18日,Vue.js发布3.0版本,代号:OnePiece(海贼王)耗时2年多、​2600+次提交、30+个RFC、600+次PR、99位贡献者github上的tags地址:​https://github.com/vuejs/vue-next/releases/tag/v3.0.0国内官网地址:​Vue.js-渐进式JavaScr......
  • [Vue warn]: Error compiling template: Component template should contain exactly
    报错信息:[Vuewarn]:Errorcompilingtemplate:Componenttemplateshouldcontainexactlyonerootelement.Ifyouareusingv-ifonmultipleelements,usev-else-iftochaintheminstead.2|3|4||......
  • Vue_Django 登录注册+图书管理系统
    Vue前端注册页面点击查看代码<template><divclass="register"><el-row:gutter="20"><el-col:span="12":offset="6"><divclass="grid-contentbg-purple">&......
  • Spring Boot&Vue3前后端分离实战wiki知识库系统<八>--分类管理功能开发二
    接着上一次SpringBoot&Vue3前后端分离实战wiki知识库系统<七>--分类管理功能开发的分类功能继续完善。分类编辑功能优化:概述:现在分类编辑时的界面长这样:很明显目前的父分类的展现形式不太人性,这里需要指定父分类的id才可以,对于用户来说这种交互是反人道的,用户怎么知道父分类......
  • vue报错Invalid VNode type: undefined
    报错项目启动后,部分内容没有显示出来。打开console后,显示[Vuewarn]:InvalidVNodetype:undefined(undefined)处理引入“defineAsyncComponent”实现异步引入。import{defineAsyncComponent}from'vue'。问题解决了。......