• 解决动态菜单router的index配置,以及第二次传参未响应情况


    目录

    动态菜单

    第二次传参问题


    本次记录两个问题

    1、动态菜单

    获取数据库信息,配置index跳转路由,从数据库获取部分值添加到已知前缀后

    2、第二次传参问题

    在复用router时,我们传递的参数可能不同,但是无法响应参数

    因为问题是在一个项目中出现的,下面大概讲讲应用场景

    我想要从数据库获取值来配置vue菜单menu,发现出现正常传值。

    下面是router的index.js

    1. import {createRouter,createWebHistory } from "vue-router";
    2. //导入组件
    3. import LoginVue from '@/views/Login.vue';
    4. import LayoutVue from "@/views/Layout.vue";
    5. //子组件
    6. import ArticleCategoryVue from "@/views/article/ArticleCategory.vue";
    7. import ArticleManageVue from "@/views/article/ArticleManage.vue";
    8. // import VideoManageVue from "@/views/video/VideoManage.vue";
    9. import VideoCategoryVue from "@/views/video/VideoCategory.vue";
    10. import UserManageVue from '@/views/user/UserManage.vue'
    11. import UserAvatarVue from "@/views/user/UserAvatar.vue";
    12. import UserInfoVue from "@/views/user/UserInfo.vue";
    13. import UserResetPasswordVue from "@/views/user/UserResetPassword.vue";
    14. import VideoManageVue from "@/views/video/VideoManage.vue";
    15. //passerby页面
    16. import IndexVue from '@/views/passerby/index.vue';
    17. import MainVue from '@/views/passerby/inner/Main.vue';
    18. import AriticleVue from '@/views/passerby/inner/Article.vue'
    19. import VideoVue from '@/views/passerby/inner/Video.vue';
    20. //定义路由关系
    21. const routes=[
    22. {path:'/login',component:LoginVue},
    23. {path:'/',component:LayoutVue,redirect:'/article/manage',children:[
    24. {path:'/article/category',component:ArticleCategoryVue},
    25. {path:'/article/manage',component:ArticleManageVue},
    26. {path:'/video/category',component:VideoCategoryVue},
    27. {path:'/video/manage',component:VideoManageVue},
    28. {path:'/user/manage',component:UserManageVue},
    29. {path:'/user/info',component:UserInfoVue},
    30. {path:'/user/avatar',component:UserAvatarVue},
    31. {path:'/user/resetPassword',component:UserResetPasswordVue}
    32. ]},
    33. {path:'/index',component:IndexVue,redirect:'/index/main',children:[
    34. {path:'/index/main',component:MainVue},
    35. {path:'/index/Article/:name',component:AriticleVue},
    36. {path:'/index/Video/:name',component:VideoVue}
    37. ]}
    38. ]
    39. //创建路由器
    40. const router=createRouter({
    41. history:createWebHistory(),
    42. routes:routes
    43. })
    44. //导出路由
    45. export default router;

    这边的name是我的参数,然后传值

    动态菜单

    我是从库里面直接获取,但发现无法正常识别,在修改后,会报这个可能问题

    1. <el-menu-item
    2. v-for="c in categorys_video"
    3. :key="c.cvId"
    4. :label="c.cvName"
    5. value="c.cvName"
    6. :index="/index/Video/"+c.cvId
    7. >{{c.cvName}}
    8. >

    正则形式不合规,好家伙直接识别成正则表达式了【挠头】

    正确用法应该是:

    1. <el-menu-item
    2. v-for="c in categorys_video"
    3. :key="c.cvId"
    4. :label="c.cvName"
    5. value="c.cvName"
    6. :index="'/index/Video/'+c.cvId"
    7. >{{c.cvName}}
    8. >
    9. el-sub-menu>

    找了小半天终于在Vue标签属性如何动态传参并拼接字符串_vue动态绑定时拼接字符串-CSDN博客

    找到。感谢

    第二次传参问题

    接下来,又遇到一个问题就是,在router传递完第一个参数后,第二个参数怎么也不响应了,

    这里也得提一下,我用的是组合式vue,它没有created,这我就得想个办法了。用了onMounted,不过没用,毕竟没重新加载。也是找了小半天

    vue脚手架项目中使用vue-router时,在传递值时出现组件复用的解决方法_防止动态路由组件复用-CSDN博客

     这个给了我方向,我去官网router找了一下

    在这导航守卫 | Vue Router又对它的讲解,使用router和route完成目标功能

    大概是这样

    1. router.beforeEach((to, from) => {
    2. // ...
    3. // 返回 false 以取消导航
    4. // console.log(to.params.name)
    5. // console.log(from)
    6. // console.log(route)
    7. route.params.name=to.params.name
    8. // console.log(route.params)
    9. videoList();
    10. return true;
    11. })

     这里最主要的就是route参数值的更改,获取to目标route的参数。

    *from是原route

    解决问题

    另外,我完成这也发现另外一个问题,这里就不详细说了,就是刷新后根据route原index,这里提供一个获取的方法

    首先菜单绑定

    然后在onMounted写

    1. onMounted(()=>{
    2. // console.log(activeIndex2.value)
    3. // console.log(route.path)
    4. activeIndex2.value=route.path
    5. })

    完成

    结束了

    写这篇,希望能帮到大家,顺便提醒自己

  • 相关阅读:
    【人月神话】深入了解软件工程和项目管理
    【GWO-KELM预测】基于灰狼算法优化核极限学习机回归预测研究(matlab代码实现)
    systemverilog:interface中端口方向、Clocking block的理解
    指静脉采集模组之调节Sensor
    读书笔记 |余华 | 文城
    俄罗斯网络间谍组织在有针对性的攻击中部署LitterDrifter USB蠕虫
    调优zuul1.x(基于arthas)
    BUUCTF做题Upload-Labs记录pass-11~pass-20
    【并发编程】并发工具类
    功能性氯乙酰化聚苯乙烯微球载体PS-acyl-Cl/二氧化锆微球表面键合磺化交联聚苯乙烯相关研究
  • 原文地址:https://blog.csdn.net/m0_52228992/article/details/136747495