码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 路由传参相应面试题


    上一篇文章中写了路由跳转和路由传参的相应内容

    Vue2和Vue3的路由跳转及路由传参_Eric加油学!的博客-CSDN博客

    针对于params和query参数的传递,有若干的面试题值得记录

    上一篇也写到了,如果使用对象形式传递params参数,需要占位,并使用name形式。

    面试题1 如何指定params参数可传可不传

    所以,第一步试验params参数占位了,但是不传递params参数会怎么样

    1. {
    2. path:'/search/:keyword',
    3. component: SearchIndex,
    4. meta:{show:true},
    5. name:"search"
    6. }
    1. $router.push({
    2. name:"search",
    3. query:{k:keyword.value.toUpperCase()}
    4. })

    这里我配置路由时,params参数占位了,但是我实际传递时,并没有params参数,只有query参数。

    这时候它的路径就会有问题。 比如,此时我是在localhost/home 。 讲道理点一下搜索按钮,至少路径应该是localhost/search 吧。如果传参了,后面应该会跟参数。

    比如 params参数为abc,query参数为ABC 。 跳转的路径应该是localhost/search/abc?k=ABC

    但如果占位而不传递params的话,它的路径是 localhost/?k=ABC (它连/search都没了!!!)

    所以如何去指定params可传可不传呢? 配置路由后,占位的后面加上一个问号? (就表示params可传递或不传递)

    1. {
    2. path:'/search/:keyword?',
    3. component: SearchIndex,
    4. meta:{show:true},
    5. name:"search"
    6. }

    面试题2:params参数可传可不传,但如果传递是空串,如何解决 

    按照上面的步骤,指定了params可传可不传,但是我实际传递时,传了params参数只不过是个空串,会怎样?

    1. {
    2. path:'/search/:keyword?',
    3. component: SearchIndex,
    4. meta:{show:true},
    5. name:"search"
    6. }
    1. $router.push({
    2. name:"search",
    3. params:{keyword: ' '},
    4. query:{k:keyword.value.toUpperCase()}
    5. })

    同样的,它的路径也会出问题,也是会少了 /search

    解决: 使用undefined解决params参数可以传递、不传递(空的字符串)

    1. $router.push({
    2. name:"search",
    3. params:{keyword: '' || undefined},
    4. query:{k:keyword.value.toUpperCase()}
    5. })

    面试题3:路由组件能不能传递props数据

    可以。 有三种写法

    router/index.js中

    1. const routes = [
    2. {
    3. path:'/search/:keyword',
    4. component: SearchIndex,
    5. meta:{show:true},
    6. name:"search",
    7. // 路由组件能不能传递props数据? 可以!
    8. // 第一种:布尔值写法 - 只能params参数
    9. // props:true
    10. // 第二种:对象写法,额外给路由组件传递一些props
    11. // props:{a:1,b:2}
    12. // 第三种:函数写法 (最常见) params参数、query参数,通过props传递给路由组件
    13. props:($route)=>{
    14. return {keyword:$route.params.keyword,k:$route.query.k};
    15. }
    16. },

    SearchIndex.vue中

    1. <script>
    2. export default {
    3. props:['keyword','k']
    4. }
    5. script>
    6. <style>
    7. style>

     不过好像实际中也很少用到props数据,(但似乎一定程度上可以解耦吧)

  • 相关阅读:
    web课程设计网页规划与设计 :DW旅游主题网页设计——凤阳智慧旅游官方-地方旅游网站模板html源码HTML+CSS+JavaScript
    1990-2020年江苏省全省人口数、户数(常住)
    图像处理黑科技——弯曲矫正、去摩尔纹、切边增强、PS检测
    三十七、Fluent冰块融化模拟
    001 ElasticSearch7.x 、IK分词器、Kibana 环境搭建、安装
    短视频创作,变现的建议、变现方式和举例,建议收藏反复阅读-上
    【C++】定位程序崩溃(Mingw)
    Windows|MySql下载与安装教程
    web网页设计期末课程大作业 基于HTML+CSS+JavaScript响应式环保科技公司网站模板(环保主题网站设计)
    LeetCode【65. 有效数字】
  • 原文地址:https://blog.csdn.net/m0_56698268/article/details/126431973
  • 最新文章
  • C# 内存安全性的重大演进:重新定义 unsafe 关键字
    [MAF的Agent管道详解-05]对话历史的持久化和输入输出的增强
    一行代码干翻 Java 反射?EggG 流式反射调用让反射优雅到不可思议
    【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (3)--- 总体思考
    用 ESP32 做了一个 AI Agent 桌面状态核心,科技感直接拉满
    马能否走遍棋盘的可达性证明
    PortSwigger SQL注入LAB10
    信息化运维项目费用测算全指南:政策边界、三大方法与实操要点
    Dify — Chatflow - 数据库智能查询
    Claude Code 实战 400 万 Tokens:接入 DeepSeek V4,从$26降到$2
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号