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

Vue.js 嵌套路由和动态路由

Vue.js 嵌套路由和动态路由

在 Vue.js 开发中,Vue Router 是官方提供的路由管理器,用于构建单页应用(SPA)。它支持嵌套路由和动态路由,帮助开发者构建复杂的应用结构。

嵌套路由

嵌套路由允许在路由配置中定义子路由,从而在组件中嵌套显示其他组件。这对于构建具有多层次结构的界面非常有用。

配置嵌套路由

  1. 定义父组件和子组件

    <!-- ParentComponent.vue -->
    <template>
      <div>
        <h2>父组件</h2>
        <router-view></router-view> <!-- 子路由组件将渲染在这里 -->
      </div>
    </template>
    
    <!-- ChildComponent.vue -->
    <template>
      <div>
        <h3>子组件</h3>
      </div>
    </template>
    
  2. 在路由配置中使用 children 属性定义嵌套路由

    import Vue from 'vue';
    import VueRouter from 'vue-router';
    import ParentComponent from './components/ParentComponent.vue';
    import ChildComponent from './components/ChildComponent.vue';
    
    Vue.use(VueRouter);
    
    const routes = [
      {
        path: '/parent',
        component: ParentComponent,
        children: [
          {
            path: 'child',
            component: ChildComponent,
          },
        ],
      },
    ];
    
    const router = new VueRouter({
      routes,
    });
    
    export default router;
    

在上述配置中,访问 /parent/child 时,ParentComponent 中的 <router-view> 会渲染 ChildComponent

动态路由

动态路由允许在路径中使用参数,从而匹配多个路由。这对于处理具有相似结构但内容不同的页面非常有用。

配置动态路由

  1. 定义动态路由

    const routes = [
      {
        path: '/user/:id',
        component: UserComponent,
      },
    ];
    

    在上述配置中,/user/:id 中的 :id 是一个动态参数,可以匹配 /user/1/user/2 等路径。

  2. 在组件中访问动态参数

    <!-- UserComponent.vue -->
    <template>
      <div>
        <h2>用户 ID: {{ userId }}</h2>
      </div>
    </template>
    
    <script>
    export default {
      computed: {
        userId() {
          return this.$route.params.id;
        },
      },
    };
    </script>
    

通过上述配置,UserComponent 可以根据路由参数显示不同的内容。

总结

  • 嵌套路由:通过在路由配置中使用 children 属性,可以在父组件中嵌套显示子组件,构建多层次的界面结构。
  • 动态路由:通过在路径中使用动态参数(如 :id),可以匹配多个具有相似结构的路由,并在组件中根据参数显示不同的内容。
    合理使用嵌套路由和动态路由,可以使 Vue.js 应用的路由配置更加灵活和强大。

http://www.kler.cn/a/516829.html

相关文章:

  • 基于 Android 的校园闲置物品交易平台设计与实现
  • 计算机网络 (57)改进“尽最大努力交付”的服务
  • 08-ArcGIS For JavaScript-通过Mesh绘制几何体(Cylinder,Circle,Box,Pyramid)
  • TODO: Linux 中的装机硬件测试工具
  • centos9编译安装opensips 二【进阶篇-定制目录+模块】推荐
  • Swift 中 Codable 和 Hashable 的理解
  • 【问题】Qt c++ 界面 lineEdit、comboBox、tableWidget.... SIGSEGV错误
  • MsfVenom木马制作及使用
  • 在K8S中,如何使用EFK实现日志的统一管理?
  • FFmpeg 头文件完美翻译之 libavcodec 模块
  • Spring MVC中HandlerInterceptor和Filter的区别
  • 编程界“华山论剑”:PHP与Go,谁主沉浮?
  • 面试题库笔记
  • 查看当前系统上运行的 Docker 容器
  • Matlab高端绘图SCI绘图模板】第004期 绘制词云图
  • 深度学习-92-大语言模型LLM之基于langchain的模型IO的模型调用
  • .netframeworke4.6.2升级.net8问题处理
  • 深入MapReduce——计算模型设计
  • TaskBuilder数据添加页面前后端交互原理解析
  • 力扣-数组-704 二分查找
  • AIGC视频扩散模型新星:Video 版本的SD模型
  • 特征选择(机器学习)
  • Jetson Xavier NX 安装 CUDA 支持的 PyTorch 指南
  • Mongodb 慢查询日志分析 - 1
  • AI代码生成器赋能房地产:ScriptEcho如何革新VR/AR房产浏览体验
  • spandsp_start_dtmf的bug及修复