Vue3中关于路由规则的props配置方式

 更新时间:2024年03月18日 10:14:41   作者:小馒头学python  
这篇文章主要介绍了Vue3中关于路由规则的props配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

简单介绍

在 Vue3 中,使用 Vue Router 进行路由管理时,可以通过配置路由规则的 props 属性,将路由参数传递给组件。

这样可以使路由参数直接作为组件的属性,在组件中使用更加方便

在路由配置中使用 props

在定义路由规则时,可以通过设置 props 属性来指定如何将路由参数传递给组件。

props 可以是一个布尔值、对象或函数

props的第一种写法

我们来回顾一下上节对于Detail.vue中的代码,使用的是params参数

<template>
    <ul class="news-list">
      <li>编号:{{ route.params.id }}</li>
      <li>标题:{{ route.params.title }}</li>
      <li>内容:{{ route.params.content }}</li>
    </ul>
  </template>
    
  <script setup lang="ts" name="About">
  import { useRoute } from 'vue-router'
  let route = useRoute()
  </script>
  
  <style scoped>
    .news-list {
      list-style: none;
      padding-left: 20px;
    }
  
    .news-list>li {
      line-height: 30px;
    }
  </style>

如果我们不想在模版中写route的话,我们需要使用torefs进行结构,下面的博客或许会帮助你

Vue3 toRefs和toRef在reactive中的一些应用

修改后的代码如下,和之前的运行结果是一样的

<template>
    <ul class="news-list">
      <li>编号:{{ params.id }}</li>
      <li>标题:{{ params.title }}</li>
      <li>内容:{{ params.content }}</li>
    </ul>
  </template>
    
  <script setup lang="ts" name="About">
  import { toRefs } from 'vue'
  import { useRoute } from 'vue-router'
  let route = useRoute()
  let {params} = toRefs(route)
  </script>
  
  <style scoped>
    .news-list {
      list-style: none;
      padding-left: 20px;
    }
  
    .news-list>li {
      line-height: 30px;
    }
  </style>

这样我们就可以省略了route,但是如果我们还想省略params呢,该怎么做

接下来我们引入props,来实现无需写route和params

首先我们需要在index.ts中加上一句

再之后我们就在Detail.vue的ts里面加上一句就可以完美的实现之前的代码了

 <script setup lang="ts" name="About">
 defineProps(['id','title','content'])
  </script>

完整代码如下

<template>
    <ul class="news-list">
      <li>编号:{{ id }}</li>
      <li>标题:{{ title }}</li>
      <li>内容:{{ content }}</li>
    </ul>
  </template>
    
  <script setup lang="ts" name="About">
 defineProps(['id','title','content'])
  </script>
  
  <style scoped>
    .news-list {
      list-style: none;
      padding-left: 20px;
    }
  
    .news-list>li {
      line-height: 30px;
    }
  </style>

上面仅仅是第一种写法,大概意思就是将路由收到的所有params参数作为props传给路由组件

props的第二种写法

这种写法是使用函数的形式

props(route){
            return route.params
          }

当然也是可以使用query的

props(route){
            return route.query
          }

但是使用query别忘了修改点地方

事实证明,也是可以实现的

props的第三种写法

第三种写法是对象写法

  • 对象写法相对于函数写法更加静态,因为它直接将固定的值传递给组件属性,无法根据路由的动态变化来改变传递的值。
  • 而函数写法可以根据需要动态地返回不同的属性值,更加灵活。
  • 因此,在需要根据路由动态变化属性值的情况下,使用函数写法更加合适;而在属性值固定的情况下,使用对象写法可能更为简洁明了

就是较为固定,如果想动态还是函数比较好

总结

通过合理配置路由规则的 props 属性,可以使路由参数更加灵活地传递给组件。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue下载不同文件的几种方式总结

    Vue下载不同文件的几种方式总结

    在Vue项目中实现文件下载有多种方式,包括使用window.open、<a>标签、axios、FetchAPI、自定义$download方法以及创建a标签等,每种方法都有其适用场景,开发者可以根据项目需求选择最合适的方式
    2025-01-01
  • Jenkins Sidebar Link插件实现添加侧边栏功能详解

    Jenkins Sidebar Link插件实现添加侧边栏功能详解

    这篇文章主要介绍了vue框架实现添加侧边栏,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • vue的el-select绑定的值无法选中el-option问题及解决

    vue的el-select绑定的值无法选中el-option问题及解决

    这篇文章主要介绍了vue的el-select绑定的值无法选中el-option问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue使用input封装上传文件图片全局组件的示例代码

    vue使用input封装上传文件图片全局组件的示例代码

    实际开发过程中,我们经常遇见需要上传文件图片功能,可以封装一个全局组件来调用,这篇文章给大家介绍vue使用input封装上传文件图片全局组件,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • Vue表单验证插件Vue Validator使用方法详解

    Vue表单验证插件Vue Validator使用方法详解

    这篇文章主要为大家详细介绍了Vue表单验证插件Vue Validator使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • vue.js实现标签页切换效果

    vue.js实现标签页切换效果

    这篇文章主要介绍了vue.js实现标签页切换效果,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • vue添加锚点,实现滚动页面时锚点添加相应的class操作

    vue添加锚点,实现滚动页面时锚点添加相应的class操作

    这篇文章主要介绍了vue添加锚点,实现滚动页面时锚点添加相应的class操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue 内置指令梳理总结

    Vue 内置指令梳理总结

    这篇文章主要介绍了Vue 内置指令梳理总结,文章首先从v-text指令展开内容介绍,具有一定的知识性参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • vue3中的ref、reactive问题解析

    vue3中的ref、reactive问题解析

    ref 和 reactive都是vue3推出的针对组合式设计的声明响应式状态的API,两者在使用之前都要先进行引入,本文通过实例代码详解vue3中的ref、reactive问题,感兴趣的朋友一起看看吧
    2024-03-03
  • vue+elementUi 实现密码显示/隐藏+小图标变化功能

    vue+elementUi 实现密码显示/隐藏+小图标变化功能

    这篇文章主要介绍了vue+elementUi 实现密码显示/隐藏+小图标变化功能,需本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01

最新评论