ant-design / pro-components

🏆 Use Ant Design like a Pro!
https://pro-components.antdigital.dev
MIT License
4.04k stars 1.29k forks source link

👑 [需求]服务器加载导航菜单 约定式路由 如何用PATH传参 #34

Closed XiaYaXia closed 3 years ago

XiaYaXia commented 3 years ago

🥰 需求描述

👑 [需求]服务器加载导航菜单 约定式路由 如何用PATH传参

🧐 解决方案

🚑 其他信息

chenshuai2144 commented 3 years ago

PATH传参? 祥细展开一下?

XiaYaXia commented 3 years ago

服务器获取的子菜单PATH是带参的 ,页面路由是同一页面

{"children":[{"name":"APP综合配置","path":"/system/BaseConfig?fid=113","icon":"","auth":"abc?groupfid=113"},{"name":"其他配置","path":"/system/BaseConfig?fid=112","icon":"","auth":"abc?groupfid=112"}]}

key 相同报错,我重写了key

const loopMenuItem = (menus: MenuDataItem[]): MenuDataItem[] =>
  menus.map(({ icon, children, key, ...item }) => ({
    ...item,
    query: item.path,
    key: item.path.indexOf('?') != -1 ? item.path.split('?')[1].split('=')[1] :'',
    path:item.path,
    icon: icon && IconMap[icon as string],
    children: children && loopMenuItem(children),
  }));

点击菜单 页面props 获取不到参数?fid=113 layout/index.js 里面直接丢弃了?后面的参数 我就重新传了一个query: item.path, 在pro-layout prolayout.js 12388行 将item.path 换成了item.query 临时解决了我的需求 点击菜单 跳转页面路径变为 http://localhost:8000/system/BaseConfig?fid=113 props 里 props.location.query.fid 能正常获取菜单path附加的参数 但是KEY 在菜单选择的时候还不能正常显示当前选择菜单项

/system/BaseConfig 复用问题 看官方有没有正确的使用方法 /system/BaseConfig里的表单由schema-generator保存propsSchema , form-render解析propsSchema生成

XiaYaXia commented 3 years ago

https://vkceyugu.cdn.bspapp.com/VKCEYUGU-wwceshi1/b07b8bb0-d2e2-11ea-9dfb-6da8e309e0d8.png

XiaYaXia commented 3 years ago

菜单key 还没弄 不能正确显示当前项 先临时这样用了

hihuangwei commented 3 years ago

没有那么复杂

XiaYaXia commented 3 years ago

怎么简单实现呢?

tangtanglove commented 3 years ago

这个问题解决了吗?

tangtanglove commented 3 years ago

@chenshuai2144 兄弟,什么时候能调整一下?升级了layout,发现不能用了。

tangtanglove commented 3 years ago

@XiaYaXia 你是怎么处理的? 明显是这里给过滤掉了 image

XiaYaXia commented 3 years ago

@quarkcms 我上面有说 我改的KEY 和自己传一个参数 你看下

tangtanglove commented 3 years ago

这个问题很无语啊,以前用着好好的;我看了你的方案,并没有找到那个参数。

XiaYaXia commented 3 years ago

query: item.path 这个是我自己加的 在pro-layout prolayout.js 12388行 将item.path 换成了item.query 换成我自己传的参数 不经过过滤的参数

tangtanglove commented 3 years ago

你pro-layout是哪个版本?不同版本,代码不一。。。。

XiaYaXia commented 3 years ago

V5

tangtanglove commented 3 years ago

@chenshuai2144 @sorrycc @hihuangwei 能否帮忙解答一下怎么处理?

tangtanglove commented 3 years ago

@XiaYaXia 你用的是ant-pro吧?我直接用的ant-layout

XiaYaXia commented 3 years ago

一样的 找到 pro-layout prolayout.js (可能是其他文件名) 里面 生成跳转链接的地方改自己传的参

tangtanglove commented 3 years ago

@hihuangwei @chenshuai2144 @sorrycc 大侠们帮帮忙

tangtanglove commented 3 years ago

@XiaYaXia 也可以将umijs/route-utils依赖退回到1.0.17; @chenshuai2144 如果下次有不兼容性的版本升级,建议遵循语义化规则。

chenshuai2144 commented 3 years ago

@quarkcms, 没想到有人这么用,我把这个功能删除一下

tangtanglove commented 3 years ago

@chenshuai2144 嗯嗯,其实这种用法应该比较常见,我的菜单全部都是后台配置,从后台读取的。

chenshuai2144 commented 3 years ago

@quarkcms https://github.com/umijs/route-utils/releases/tag/v1.0.31

tangtanglove commented 3 years ago

image 这个问题好像并没有解决