当前位置: 首页 > news >正文

Vue入门【九】-- 动态路由和嵌套路由

♡ ‧₊˚动态路由  ₊˚ ♡ 

我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”来达到这个效果:

一个“路径参数”使用冒号 : 标记。

User.vue

<template>
  <div>
    {{ msg }}
  </div>
</template>
  <script>
export default {
  data() {
    return {
      msg: "用户页面",
    };
  }
};
</script>

index.js中引入user组件:

import User from '../components/User.vue'

并注册user路由: 

 App.vue

 

当user的id 为1时:

将id手动修改为2时依旧是这个页面:

可以看到,当我们更改动态路径参数时,页面没有进行跳转,仍然是原先的这个页面。

复用组件时,想对路由参数的变化作出响应的话,你可以简单地 watch $route 对象,或者使用组件内部的导航守卫(后续继续介绍):

 在user.vue中data的同级位置下使用watch或生命周期钩子函数created对参数变化进行监听:

watch(to,from):第一个参数为跳转前的页面路径,第二个参数为跳转前:

 watch: {
    $route(to, from) {
      console.log(to, from);
    },
  },

当匹配到一个路由时,参数值会被设置到 this.$route.params,可以在每个组件内使用。于是,我们可以更新 User 的模板,输出当前用户的 ID: 

<template>
  <div>
    {{ msg }} -- {{$route.params.id}}
  </div>
</template>

从user为3时我们再次点击User,能监听到路径变化

created: 

  // 监听路由参数变化获取数据
  created(){
  	console.log(this.$route);
  }

♡ ‧₊˚嵌套路由  ₊˚ ♡ 

在选项卡中,顶部有数个导航栏,中间的主体显示的是内容;这个时候,整个页就面是一个路由,然后点击选项卡切换不同的路由来展示不同的内容,这个时候就是路由中嵌套路由。在实际项目中我们会碰到多层嵌套的组件组合而成,但是我们如何实现嵌套路由呢?因此我们需要在VueRouter 的参数中使用 children 配置,这样就可以很好的实现路由嵌套。

实例:

在src下新建一个pages存放我们作为Column下嵌套的三个子页面。

三个页面中的内容:

我们需要实现的效果是:点击Column中的子页面便跳出对应页面的内容: 

我们需要在router下的index.js中导入各个页面组件:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Article from '../components/Article.vue'
import Column from '../components/Column.vue'
import onechild from '../pages/onechild.vue'
import twochild from '../pages/twochild'
import threechild from '../pages/threechild.vue'
Vue.use(VueRouter)

 创建路由对象数组:

要在嵌套的出口中渲染组件,需要在 VueRouter 的参数中使用 children 配置:

相关文章:

  • Python数据类型:序列(列表list、元组tuple)
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • 算法分析与设计:10 大排序算法大汇总(Java)
  • 【斯坦福大学公开课CS224W——图机器学习】六、图神经网络1:GNN模型
  • Google Earth Engine(GEE)——GEE错误结果没有变化?
  • 《Improved Techniques for Training GANs》-论文阅读笔记
  • 十一假期,分享几个好玩儿的GitHub项目
  • AcWing 第71场周赛
  • Redis实战 - 02 Redis 保存短信验证码实现用户注册
  • AcWing——第 71 场周赛
  • 利用Vulhub复现log4j漏洞CVE-2021-44228
  • 【学生网页设计作业源码】基于html+css保护海豚主题网页设计与制作(7页)
  • 频率响应说明
  • C++教程系列之-01-C++概述与NOIP案例
  • Network 之十四 email 通信架构、Postfix 部署详解
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Babel配置的不完全指南
  • git 常用命令
  • HTTP 简介
  • Java 内存分配及垃圾回收机制初探
  • npx命令介绍
  • SpringCloud集成分布式事务LCN (一)
  • 初探 Vue 生命周期和钩子函数
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 利用jquery编写加法运算验证码
  • 排序算法学习笔记
  • 前端存储 - localStorage
  • 听说你叫Java(二)–Servlet请求
  • 新手搭建网站的主要流程
  • 用Visual Studio开发以太坊智能合约
  • Java总结 - String - 这篇请使劲喷我
  • 积累各种好的链接
  • ​iOS安全加固方法及实现
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (16)Reactor的测试——响应式Spring的道法术器
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (三)uboot源码分析
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转载)虚函数剖析
  • .equals()到底是什么意思?
  • .form文件_SSM框架文件上传篇
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Micro Framework初体验(二)
  • .NET连接MongoDB数据库实例教程
  • .NET轻量级ORM组件Dapper葵花宝典
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET微信公众号开发-2.0创建自定义菜单
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @WebService和@WebMethod注解的用法