【Vue路由】多级路由、路由传参、命名路由、params使用

news2024/11/24 9:43:58

文章目录

  • 多级路由
    • 案例实验
    • 总结
  • 路由传参
    • 案例实验
    • 总结
  • 命名路由
  • 路由的params参数

多级路由

案例实验

我们尝试做出如下的效果:

在这里插入图片描述

首先项目结构:
在这里插入图片描述
我们直接看四个路由组件:
About.vue

	<template>
	<h2>我是About的内容</h2>
</template>

<script>
	export default {
		name:'About',
	}
</script>

Home.vue

<template>
	<div>
		<h2>Home组件内容</h2>
		<div>
			<ul class="nav nav-tabs">
				<li>
					<router-link class="list-group-item" active-class="active" to="/home/news">News</router-link>
				</li>
				<li>
					<router-link class="list-group-item" active-class="active" to="/home/message">Message</router-link>
				</li>
			</ul>
			<router-view></router-view>
		</div>
	</div>
</template>

<script>
	export default {
		name:'Home',
	}
</script>

Message.vue

<template>
	<div>
		<ul>
			<li>
				<a href="/message1">message001</a>&nbsp;&nbsp;
			</li>
			<li>
				<a href="/message2">message002</a>&nbsp;&nbsp;
			</li>
			<li>
				<a href="/message/3">message003</a>&nbsp;&nbsp;
			</li>
		</ul>
	</div>
</template>

<script>
	export default {
		name:'Message'
	}
</script>

News.vue

<template>
	<ul>
		<li>news001</li>
		<li>news002</li>
		<li>news003</li>
	</ul>
</template>

<script>
	export default {
		name:'News'
	}
</script>

再来看App和router/index.html:

<template>
    <div>
        <div class="row">
            <Banner/>
        </div>
        <div class="row">
            <div class="col-xs-2 col-xs-offset-2">
                <div class="list-group">
                    <!-- Vue中借助router-link标签实现路由的切换 -->
                    <router-link class="list-group-item" active-class="active" to="/about">About</router-link>
                    <router-link class="list-group-item" active-class="active" to="/home">Home</router-link>
                </div>
            </div>
            <div class="col-xs-6">
                <div class="panel">
                    <div class="panel-body">
                        <!-- 指定组件的呈现位置 -->
                        <router-view></router-view>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    import Banner from './components/Banner'

    export default {
        name: 'App',
        components: {Banner}
    }
</script>
// 该文件专门用于创建整个应用的路由器
import VueRouter from 'vue-router'
//引入组件
import About from '../pages/About'
import Home from '../pages/Home'
import News from '../pages/News'
import Message from '../pages/Message'

//创建并暴露一个路由器
export default new VueRouter({
	routes:[
		{
			path:'/about',
			component:About
		},
		{
			path:'/home',
			component:Home,
			children:[
				{
					path:'news',
					component:News,
				},
				{
					path:'message',
					component:Message,
				}
			]
		}
	]
})

总结

多级路由(嵌套路由)

  1. 配置路由规则,使用children配置项

    routes:[
    	{
    		path:'/about',
    		component:About,
    	},
    	{
    		path:'/home',
    		component:Home,
    		children:[ //通过children配置子级路由
    			{
    				path:'news', //此处一定不要写:/news
    				component:News
    			},
    			{
    				path:'message',//此处一定不要写:/message
    				component:Message
    			}
    		]
    	}
    ]
    
  2. 跳转(要写完整路径):

    <router-link to="/home/news">News</router-link>
    

路由传参

案例实验

我们现在在上一个案例的基础上做一个如下的案例:
在这里插入图片描述

我们点击哪个消息,就在下面的新组件中显示这个消息的详细信息。我们把这个新组件命名为Detail。

因为原理是一样的我们就只做Message里面的效果,News组件里面的东西就不变了

接下来我们在上一部分的代码上进行修改,首先我们注册以下新的路由组件:
在这里插入图片描述
然后我们将Message组件中的标签修改一下:

<template>
	<div>
		<ul>
			<li v-for="m in messageList" :key="m.id">
				<!-- 跳转路由并携带query参数,to的字符串写法 -->
				<!-- <router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link>&nbsp;&nbsp; -->

				<!-- 跳转路由并携带query参数,to的对象写法 -->
				<router-link :to="{
					path:'/home/message/detail',
					query:{
						id:m.id,
						title:m.title
					}
				}">
					{{m.title}}
				</router-link>
			
			</li>
		</ul>
		<hr>
		<router-view></router-view>
	</div>
</template>

<script>
	export default {
		name:'Message',
		data() {
			return {
				messageList:[
					{id:'001',title:'消息001'},
					{id:'002',title:'消息002'},
					{id:'003',title:'消息003'}
				]
			}
		},
	}
</script>

这里传递有两种写法:

  • 对象写法
  • 字符串模板写法

在我们Detail组件中直接使用我们前面提到过的$route对象将外面传递过来的参数进行呈现即可:
在这里插入图片描述
这样就完成了!

总结

路由的query参数

  1. 传递参数

    <!-- 跳转并携带query参数,to的字符串写法 -->
    <router-link :to="`/home/message/detail?id=666&title=你好`">跳转</router-link>
    				
    <!-- 跳转并携带query参数,to的对象写法 -->
    <router-link 
    	:to="{
    		path:'/home/message/detail',
    		query:{
    		   id:666,
               title:'你好'
    		}
    	}"
    >跳转</router-link>
    
  2. 接收参数:

    $route.query.id
    $route.query.title
    

命名路由

  1. 作用:可以简化路由的跳转。

  2. 如何使用

    1. 给路由命名:

      {
      	path:'/demo',
      	component:Demo,
      	children:[
      		{
      			path:'test',
      			component:Test,
      			children:[
      				{
                          name:'hello' //给路由命名
      					path:'welcome',
      					component:Hello,
      				}
      			]
      		}
      	]
      }
      
    2. 简化跳转:

      <!--简化前,需要写完整的路径 -->
      <router-link to="/demo/test/welcome">跳转</router-link>
      
      <!--简化后,直接通过名字跳转 -->
      <router-link :to="{name:'hello'}">跳转</router-link>
      
      <!--简化写法配合传递参数 -->
      <router-link 
      	:to="{
      		name:'hello',
      		query:{
      		   id:666,
                 title:'你好'
      		}
      	}"
      >跳转</router-link>
      

注意:
简化跳转只能是在to中传入对象的时候。如果使用的是字符串形式就不能简化。

路由的params参数

  1. 配置路由,声明接收params参数

    {
    	path:'/home',
    	component:Home,
    	children:[
    		{
    			path:'news',
    			component:News
    		},
    		{
    			component:Message,
    			children:[
    				{
    					name:'xiangqing',
    					path:'detail/:id/:title', //使用占位符声明接收params参数
    					component:Detail
    				}
    			]
    		}
    	]
    }
    
  2. 传递参数

    <!-- 跳转并携带params参数,to的字符串写法 -->
    <router-link :to="/home/message/detail/666/你好">跳转</router-link>
    				
    <!-- 跳转并携带params参数,to的对象写法 -->
    <router-link 
    	:to="{
    		name:'xiangqing',
    		params:{
    		    id:666,
                title:'你好'
    		}
    	}"
    >跳转</router-link>
    

    特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!

  3. 接收参数:

    $route.params.id
    $route.params.title
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90972.html

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

相关文章

Android 音视频采集那些事

音视频采集 在整个音视频处理的过程中&#xff0c;位于发送端的音视频采集工作无疑是整个音视频链路的开始。在 Android 或者 IOS 上都有相关的硬件设备——Camera 和麦克风作为输入源。本章我们来分析如何在 Android 上通过 Camera 以及录音设备采集数据。 Camera 在 Andro…

web网页设计期末课程大作业:家乡旅游主题网站设计——河北8页HTML+CSS+JavaScript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

【爬虫实战项目】Python爬虫批量旅游景点信息数据并保存本地(附源码)

前言 今天给大家介绍的是Python爬虫批量下载旅游景点信息数据&#xff0c;在这里给需要的小伙伴们代码&#xff0c;并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫&#xff0c;基本的是加请求头&#xff0c;但是这样的纯文本数据爬取的人会…

丰立智能在创业板上市:总市值达到33亿元,王友利夫妇为实控人

12月15日&#xff0c;浙江丰立智能科技股份有限公司&#xff08;下称“丰立智能”&#xff0c;SZ:301368&#xff09;在深圳证券交易所创业板上市。本次上市&#xff0c;丰立智能的发行价格为22.33元/股&#xff0c;发行数量为3010万股&#xff0c;募资总额约为6.72亿元&#x…

企业数字化进程中,商业智能 BI 如何降本增效

当下形势&#xff0c;不稳定性已是常态&#xff0c;国际形势复杂多变&#xff0c;疫情对各行各业的企业影响巨大&#xff0c;市场环境日新月异&#xff0c;要想在激烈的竞争中站稳脚跟&#xff0c;实现企业盈利&#xff0c;必须降本增效。你是否考虑过利用数字技术这些新手段让…

关于Revit中门窗插入问题技巧和门窗生成

一、Rvit中门窗插入时需要注意的问题和技巧 1.在平面中插入门窗时&#xff0c;在键盘中输入SM门窗会自动定义在墙体的中心位置&#xff0c;如图1所示。 2.空格键可以快速调整门开启的方向 3.在三维视图中插入门窗时&#xff0c;窗户的位置可以任意插入&#xff0c;而插入的门系…

基于springboot休闲娱乐代理售票系统设计与实现的源码+文档

摘要 网络的广泛应用给生活带来了十分的便利。所以把休闲娱乐代理售票管理与现在网络相结合&#xff0c;利用java技术建设休闲娱乐代理售票系统&#xff0c;实现休闲娱乐代理售票的信息化。则对于进一步提高休闲娱乐代理售票管理发展&#xff0c;丰富休闲娱乐代理售票管理经验…

math_常用放缩不等式及其变形@指数@对数@三角函数@一次函数

文章目录三角函数对数分式x>0x>0x>0x∈(0,12π)x\in(0,\frac{1}{2}\pi)x∈(0,21​π)正弦正切x∈(0,1)x\in(0,1)x∈(0,1)有界性正弦余弦反三角x∈Rx\in{R}x∈R指数和幂三角函数对数分式 x>0x>0x>0 sin⁡x<x(x>0)\sin{x}<x(x>0)sinx<x(x>0)…

[GYCTF2020]Easyphp

打开界面&#xff0c;一个登陆的窗口&#xff0c;想到sql注入 然后查看源码没有多余的提示 然后试了一下常见的www.zip成功下载文件 index.php发现了包含文件 <?php require_once "lib.php";if(isset($_GET[action])){require_once(__DIR__."/".$_…

数据结构 | 红黑树、平衡二叉树旋转、并查集

一、红黑树 1.1、红黑树的定义&#xff08;左根右&#xff0c;根叶黑&#xff0c;不红红&#xff0c;黑路同&#xff09; 前提&#xff0c;对于一棵二叉排序树(或者说二叉搜索树)&#xff0c;如果满足以下定义则是红黑树&#xff1a; ①每个结点或是红色&#xff0c;或是黑色的…

2022-12-15 工作记录--React-用swiper实现多行交错、同速、跑马灯效果的弹幕式轮播(坑)

React-用swiper实现多行交错、同速、跑马灯效果的弹幕式轮播&#xff08;坑&#xff09; 激动的心呀呀呀&#xff01;٩(๑>◡<๑)۶ 历时昨天一下午滴时间昨晚凌晨一点多&#x1f31b;还爬起来思考&#x1f914;这个问题&#xff08;眼睛一闭着&#x1f634;&#xff0c…

2471. 逐层排序二叉树所需的最少操作数目-层次遍历+选择排序

2471. 逐层排序二叉树所需的最少操作数目-层次遍历选择排序 给你一个 值互不相同 的二叉树的根节点 root 。 在一步操作中&#xff0c;你可以选择 同一层 上任意两个节点&#xff0c;交换这两个节点的值。 返回每一层按 严格递增顺序 排序所需的最少操作数目。 节点的 层数…

虚拟机的垃圾收集(一)

虚拟机就好比是一个有限空间的一个房子&#xff0c;在我们生活中&#xff0c;也会产生各种各样的垃圾&#xff0c;虚拟机也不例外&#xff0c;垃圾满了会造成内存溢出等问题&#xff0c;那虚拟机是怎么进行垃圾回收的呢?让我们来揭开这神秘的面纱 1.概述 程序计数器、虚拟机…

融一亿但被质疑的5ire为何大家有分歧

5ire是由印度裔企业家 Pratik Gauri 和 Prateek Dwivedi 以及 Web3 金融家 Vilma Mattila 于 2021 年 8 月创立的区块链项目&#xff0c;官方在2022年7月公布以15亿美元估值获得一亿美元融资&#xff0c;机构为英国企业集团 SRAM & MRAM Group &#xff0c;成为印度的第 10…

[附源码]Python计算机毕业设计高校教材管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

电影《海贼王:红发歌姬》观后感

上周&#xff0c;北京已经开始陆续解封了&#xff0c;电影院也可以进入了&#xff0c;只要持有48小时核算就行&#xff0c;于是去看了这部电影《海贼王&#xff1a;红发歌姬》&#xff0c;去看之前&#xff0c;看了预告片&#xff0c;讲述路飞小时候的玩伴乌塔&#xff0c;长大…

NLP创业破局,如何摘取更高处的果实

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入&#xff01;2022年&#xff0c;云从科技、商汤科技先后登陆资本市场&#xff0c;计算机视觉四小龙中的旷视科技、依图科技也在摩拳擦掌。反观NLP领域&#xff0c;相关企业的发展速度、融资规模、上市进程仿佛都要略逊一筹&…

java计算机毕业设计基于安卓Android的二手交易app-闲置物品交易app-ssm

项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设…

数组 reduce 方法使用记录

概述 reduce()方法对数组中每个元素执行一次 reduce&#xff08;&#xff09;函数 —升序执行&#xff0c;将其结果汇总为单个返回值。 reduce方法可做的事情特别多&#xff0c;就是训话遍历能做的&#xff0c;reduce都可以做&#xff0c;比如&#xff1a;数组求和&#…

Vue基础快速入门

目录 1.vue基础 1.1vue项目创建 1.2 el挂载 1.3.data数据对象 2.本地应用 2.1.内容绑定&#xff0c;事件绑定 v-text ​v-html 传递自定义参数&#xff0c;事件修饰符 总结&#xff1a; 结合使用&#xff1a;计数器 2.2.显示切换&#xff0c;属性绑定 v-show v…