React-admin中如何通过MenuItemLink传递属性?
当然可以给MenuItemLink加载的组件传递属性,你遇到location.state返回undefined的问题,大概率是to属性的写法不对,以下是正确的实现步骤:
给MenuItemLink的
to属性传对象格式,而不是字符串路径,这样才能携带state数据:<MenuItemLink to={{ pathname: '/你的目标路由路径', state: { name: '测试数据', id: 123 } // 这里放你要传递的任意数据 }} label="菜单选项文本" />目标组件中用
useLocation获取state的代码是正确的,但要注意两个前提:- 必须通过点击这个MenuItemLink跳转进入目标组件,直接刷新页面或手动输入URL会导致state丢失(因为state存在内存中,不会同步到URL)
- 确保已经正确导入
useLocation:import { useLocation } from 'react-router-dom';
如果还是获取不到state,可以排查这些点:
- 检查
to属性是不是写成了字符串形式(比如to="/path"),这种写法无法携带state - 确认跳转动作确实是由该MenuItemLink触发的,而非其他路由跳转方式
- 核对react-router-dom的版本,虽然核心用法一致,但部分旧版本可能存在兼容问题
内容的提问来源于stack exchange,提问作者kailoon
相关产品推荐
相关产品推荐

