You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-admin自定义用户菜单出现TS2740类型缺失错误如何解决?

报错触发原因
  1. 你没有将父组件(UserMenu)注入的全量属性透传给内部的MenuItemLink组件。UserMenu的子组件会自动收到react-admin和Material UI注入的selected、dense、className等数百个属性,你仅手动传递了ref和onClick,缺失的属性触发了TS2740类型校验失败。
  2. 你将sidebarIsOpen属性写死为true,没有和父组件传递的侧边栏状态同步,也会导致属性匹配异常。
  3. 自定义菜单项组件没有接收UserMenu传递的props,直接空置传参,导致上游属性完全没有传递到MenuItemLink层。
修复方案

按如下修改代码即可解决报错:

import SettingsIcon from '@material-ui/icons/Settings';
import { forwardRef } from 'react';
import { MenuItemLink, UserMenu, AppBar } from 'react-admin';

const ConfigurationMenu = forwardRef<any, any>((props, ref) => (
    <MenuItemLink
        ref={ref}
        {...props} // 透传所有父组件属性,补全缺失的类型字段
        to="/metamaskLogin"
        primaryText="MetaMask"
        leftIcon={<SettingsIcon />}
        onClick={props.onClick}
        sidebarIsOpen={props.sidebarIsOpen} // 从props读取侧边栏状态,不要写死
    />
));

const MyUserMenu = (props: any) => (
    <UserMenu {...props}>
        <ConfigurationMenu {...props} /> // 透传UserMenu注入的属性到自定义组件
    </UserMenu>
);

export const MyAppBar = (props: any) => <AppBar {...props} userMenu={<MyUserMenu />} />;
可选优化
  • 可将forwardRef的泛型any替换为MenuItemLink的官方导出类型,完全消除any类型的不严谨问题
  • 不需要额外修改onClick逻辑,透传的props已内置点击后自动关闭用户菜单的能力

内容的提问来源于stack exchange,提问作者ReiGun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:24:06