超级英雄的导航之旅:动态路由和嵌套路由

news2024/9/25 11:19:11

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

    • 介绍动态路由的概念和用法
    • 处理带参数的路由
    • 创建嵌套路由的结构和用法

介绍动态路由的概念和用法

动态路由是指根据不同的参数或路径生成的路由。它允许我们根据特定的值动态创建路由,而不是在路由配置时硬编码地写入所有可能的路由。

动态路由的概念和用法如下:

  1. 定义动态路由路径:在路由配置中,可以使用冒号(:)来定义动态片段,表示该部分路径可以根据特定的值动态生成。
const router = new VueRouter({
  routes: [
    {
      path: '/users/:id',
      component: UserDetail
    }
  ]
});

在上述代码中,路径 /users/:id 中的 :id 是一个动态片段,表示该部分路径可以匹配任意的值。

  1. 访问动态路由参数:在路由组件中,可以通过 $route.params 来访问动态路由的参数。
// UserDetail.vue
export default {
  created() {
    const userId = this.$route.params.id;
    // 使用 userId 做相应的操作,例如获取用户信息
  }
};

在上述代码中,使用 this.$route.params.id 可以获取路由的动态参数 id,并在组件中使用。

  1. 监听动态路由的变化:如果动态路由的参数发生变化,可以监听 $route 对象的变化,并通过钩子函数或观察者来处理。

钩子函数方式监听:

// UserDetail.vue
export default {
  beforeRouteUpdate(to, from, next) {
    const userId = to.params.id;
    // 根据新的 userId 做相应的操作
    next();
  }
};

观察者方式监听:

// UserDetail.vue
export default {
  watch: {
    '$route' (to, from) {
      const userId = to.params.id;
      // 根据新的 userId 做相应的操作
    }
  }
};

通过钩子函数或观察者,可以在动态路由参数发生变化时进行相应的操作,例如重新加载数据或更新组件。

动态路由允许我们根据不同的参数或路径生成路由,使得应用更灵活和可扩展。它适用于需要根据不同资源或实体显示不同内容的情况,例如显示不同用户的详细信息或不同文章的内容。

处理带参数的路由

处理带参数的路由是 Vue Router 中常见的需求之一。你可以使用动态路由或查询参数来处理带参数的路由。下面我将分别介绍它们的概念和用法:

  1. 动态路由参数:
    动态路由参数是将参数直接嵌入到路由的路径中。例如,对于路径 /users/:id,其中的 :id 就是一个动态路由参数。可以通过动态路由参数来实现根据不同的参数值动态生成路由。

定义动态路由路径时,在路由配置中使用冒号(:)来定义动态片段:

const router = new VueRouter({
  routes: [
    {
      path: '/users/:id',
      component: UserDetail
    }
  ]
});

访问动态路由参数时,在路由组件中使用 $route.params 来获取参数的值:

// UserDetail.vue
export default {
  mounted() {
    const userId = this.$route.params.id;
    // 使用 userId 做相应的操作,例如获取用户信息
  }
};
  1. 查询参数:
    查询参数是以键值对的形式出现在 URL 中的参数。它们通常用于筛选、排序或传递其他可选参数。

定义带查询参数的路由路径时,可以使用 query 字段来指定查询参数:

const router = new VueRouter({
  routes: [
    {
      path: '/search',
      component: SearchResults
    }
  ]
});

在页面跳转时,可以通过 $router.push 方法传递查询参数:

this.$router.push({
  path: '/search',
  query: {
    keyword: 'Vue',
    page: 1
  }
});

在路由组件中,可以通过 $route.query 来获取查询参数的值:

// SearchResults.vue
export default {
  mounted() {
    const keyword = this.$route.query.keyword;
    const page = this.$route.query.page;
    // 使用 keyword 和 page 做相应的操作,例如进行搜索结果展示
  }
};

通过查询参数,你可以在 URL 中传递一些可选的参数,从而实现不同的页面展示和功能触发。

以上是处理带参数的路由的概念和用法,你可以根据你的具体需求选择合适的方式。

创建嵌套路由的结构和用法

嵌套路由是指在 Vue Router 中创建具有父子关系的路由结构。通过嵌套路由,你可以在应用程序中创建层次结构和组织路由,以更好地管理和展示你的页面。

下面是创建嵌套路由的结构和用法:

  1. 定义父路由和子路由:
    在路由配置中,可以定义父路由和子路由。父路由用于对应一个页面组件,而子路由则是该页面组件内的子组件的路由。
const router = new VueRouter({
  routes: [
    {
      path: '/users',
      component: Users,
      children: [
        {
          path: 'profile',
          component: UserProfile
        },
        {
          path: 'settings',
          component: UserSettings
        }
      ]
    }
  ]
});

在上述代码中,/users 是父路由的路径,对应的组件是 UsersUsers 组件内部有两个子组件的路由,即 /users/profile 对应 UserProfile 组件,/users/settings 对应 UserSettings 组件。

  1. 在父组件中设置 <router-view>
    在父路由对应的组件模板中,添加 <router-view> 指令来标记子组件的出口位置。
<!-- Users.vue -->
<template>
  <div>
    <h1>Users Page</h1>
    <router-view></router-view> <!-- 子组件的路由将在此处渲染 -->
  </div>
</template>

在上述代码中,<router-view> 指令将作为子组件路由的渲染位置。

  1. 切换子路由:
    在父组件的模板中,可以使用 <router-link> 组件来切换不同的子路由。
<!-- Users.vue -->
<template>
  <div>
    <h1>Users Page</h1>
    <router-link to="/users/profile">Profile</router-link>
    <router-link to="/users/settings">Settings</router-link>
    <router-view></router-view>
  </div>
</template>

在上述代码中,<router-link> 组件将显示为链接,点击链接将切换到对应的子路由。

通过以上步骤,你就可以创建一个嵌套路由的结构。当访问父路由时,父组件将显示,并在其内部的 <router-view> 处渲染对应的子组件。

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

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

相关文章

linux下backtrace函数获取函数调用堆栈信息用法

backtrace用途介绍&#xff1a; 使用backtrace可以查看函数的调用关系&#xff0c;也可以查看程序异常时的函数调用关系。配置生成coredump生成文件的方法也可以捕获异常&#xff0c;但产生的coredump文件内存较大&#xff0c;backtrace函数的方法占用的内存小。 需求&#x…

这个人工智能社区火爆了!手把手教你零代码搞定大模型应用开发

想给自己做个私人定制的旅行攻略&#xff0c;满足个性化的出游需求&#xff0c;还要细致关注到天气、穿衣、老人孩子的作息等等&#xff0c;但太耗时费力怎么办&#xff1f;让AI帮忙搞定。一位开发者在AI Studio星河大模型社区用短短数小时就做好了“旅行规划家”智能应用。像这…

ICS TRIPLEX T8311 控制器模块

掌握器模块是产业自动化和掌握体系中的症结组件&#xff0c;具备多种特征&#xff0c;以保证体系的稳定性、否靠性和高效性。以下是掌握器模块的一些主要特征&#xff1a; 多通道掌握&#xff1a; 掌握器模块通常否以或许掌握多个通道&#xff0c;许否同时治理多个装备或历程。…

基于ADS的肖特基二极管整流电路仿真

文章目录 一、构建二极管模型二、构建封装寄生的二极管模型三、构建整流电路四、仿真及优化4.1HB仿真4.2 LSSP仿真4.3 仿真及调谐结束最近在仿真一个12级的整流电路,想利用ADS做一些原理级的仿真,验证可行性。这个事情对理解非线性电路还是有点帮助,所以把它记录下来。 先来…

C++中的std::cout与std::cerr、std::clog

本文用于记录C中std::cout与std::cerr、std::clog的异同 std::cerr 是C标准库中的标准错误输出流&#xff0c;用于向标准错误设备输出信息&#xff0c;通常用于报告程序的错误和异常情况。与之相对的&#xff0c;std::cout 是标准输出流&#xff0c;用于向标准输出设备输出一般…

springboot是如何工作的

一、前言 现在java后端开发框架比较多的使用springboot框架&#xff0c;springboot是在以前的springMVC进行封装和优化&#xff0c;最大的特点是简化了配置和内置Tomcat。本节通过阅读源码理解springboot是如何工作的。 二、springboot是如何工作的 1、从启动类开始 /***服务…

“探索Linux世界:从CentOS安装到常见命令使用“

目录 引言一、安装CentOS二、Linux的常见命令文件夹和目录操作命令文件编辑命令vi或vim编辑器命令模式编辑模式末行模式 总结 引言 在计算机领域&#xff0c;Linux作为一种强大而灵活的操作系统&#xff0c;在服务器、嵌入式设备和个人电脑等领域广泛应用。本文将引导您了解并…

如何将 ONLYOFFICE 桌面版编辑器 7.5 安装到 Red Hat、CentOS 及衍生产品上

使用桌面版的 ONLYOFFICE 在线编辑器&#xff0c;您可使用本地文件操作&#xff0c;无需保持互联网连接状态。 ONLYOFFICE 桌面编辑器是什么 ONLYOFFICE 桌面编辑器是一款全面的办公工具&#xff0c;提供了文本文档、电子表格、演示文稿、可填写表单和 PDF 查看和编辑功能。它…

六、【图像去水印】

文章目录 裁剪法移动复制法内容识别去水印色阶法去水印消失点法去水印反相混合法 裁剪法 处于边缘的水印&#xff0c;通过裁剪去除&#xff0c;如下图&#xff1a; 移动复制法 移动复制法适用于水印的背景这部分区域比较相似的情况下使用&#xff0c;如下图先使用矩形选区选中…

ICS TRIPLEX T9402数字输出模块

数字输入模块是产业自动化和掌握体系中的闭键组件&#xff0c;用于向外部装备发送数字输入旌旗灯号&#xff0c;通常用于掌握继电器、阀门、机电、灯光和其他数字装备。以下是数字输入模块的一些主要用处&#xff1a; 掌握履行器&#xff1a; 数字输入模块用于掌握履行器装备&a…

工作中的小tips:如何快速提取图片或者pdf上的文字,进行编辑?

工作中经常会碰到需要的材料是图片或者不能拷贝的pdf之类的情况&#xff0c;那么有没有办法快速从上面提取文字呢&#xff1f; 最近发现一个很好用的网站&#xff0c;百度翻译。首先说明一下&#xff0c;接下来的方法比较适合短一点的文字&#xff0c;像是大篇幅的那种不太适合…

0001net程序设计-net大学校园二手交易平台

文章目录 摘 要目 录系统设计开发环境 摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&…

滑动窗口限流算法实现一

固定算法 原理&#xff1a;固定算法是将时间线分隔成固定大小的时间窗口&#xff0c;每个窗口都会有个计数器&#xff0c;用来记录窗口时间范围内的请求总数&#xff0c;如果窗口的请求总数达到最大限定值&#xff0c;会认定流量超限。比如将窗口大小设为1分钟&#xff0c;每分…

怎么搭建一个蛋糕店小程序?

在当今的移动互联网时代&#xff0c;很多企业纷纷选择了小程序作为推广和销售的利器。对于蛋糕店来说&#xff0c;创建一个小程序可以提高品牌知名度&#xff0c;增加销售渠道。下面&#xff0c;我们以【乔拓云】第三方平台为例&#xff0c;来介绍一个完整蛋糕店小程序的制作流…

Java学习 5.Java-逻辑控制

逻辑控制 逻辑控制分为&#xff1a;选择语句、循环语句 一、if和switch选择语句 顺序中夹杂着循环&#xff0c;伴随着一次次的选择不断地成长 1.if语句 选择语句 单分支 if() 表达式; int a60;if(a60){System.out.println("a60");} 双分支 if(){ 表达式1&…

人工智能AI 全栈体系(九)

第一章 神经网络是如何实现的 如何用神经网络处理不等长文本的方法&#xff1f; 八、循环神经网络&#xff08;RNN: Recurrent Neural Network&#xff09; 处理不等长文本的神经网络 – 循环神经网络 RNN。 1. 从句子理解说起 上次讲了用词向量表示词&#xff0c;一句话也…

Vue Router:让你的应用路由起来!

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

uni-app:查询对象中字段为可变情况的子项

如上图&#xff0c;数据中aaa为可变项&#xff0c;需要查询其子项name的值 var test aaa var data {"no":1,"aaa": {"name":张三,"age": 20}, } console.log(data[test].name) 定义一个变量test&#xff0c;其值设置为aaa&#xff…

SENet: 强化深度卷积神经网络的自适应特征学习

SENet&#xff08;Squeeze-and-Excitation Network&#xff09;是一种革命性的深度卷积神经网络架构&#xff0c;旨在提高模型对图像特征的建模能力。它引入了自适应特征重新校准机制&#xff0c;通过学习性地调整通道间的重要性&#xff0c;提高了模型的性能&#xff0c;广泛用…

在Windows上 ciphey安装(详细版)

文章目录 前言 一、不想卸载原有的python版本&#xff1f; 二、安装步骤 1.安装python 2.创建虚拟环境vnev 3.在ciphey的虚拟环境中进行激活 4.安装ciphey 三、参数列表 总结 前言 提示&#xff1a;安装了好几次&#xff0c;但是都没安装成功&#xff0c;我使用了三个电脑p…