使用 antd 在组件中创建子菜单失败

2024-04-03

我正在使用 antd:^3.5.4

我有一个包含用户管理项目的菜单。 未登录时,菜单有一个带有登录页面链接的菜单项 登录后,菜单有一个子菜单,其中包含多个链接,包括注销

我只是对连接的用户进行简单的测试以显示链接或子菜单。 当所有内容都在同一个文件中时我工作得很好

    <Menu mode="horizontal">
      <Menu.Item key="home">
        <Link to={RoutesNames.HOMEPAGE}>Home</Link>
      </Menu.Item>
      {this.props.currentUserIsSignedIn ? ( 
      <SubMenu key="usermenu" title={<Avatar>A</Avatar>}> 
        <Menu.Item key="info">{this.props.currentUserEmail}</Menu.Item> 
        <Menu.Item key="logout"> 
          <Link onClick={this.props.signOutUser}>Log out</Link> 
        </Menu.Item> 
      </SubMenu> 
      ) : ( 
      <Menu.Item key="login"> 
        <Link to={RoutesNames.LOGIN}>Signin / Register</Link> 
      </Menu.Item> 
      )} 
    </Menu>

当我尝试创建处理此逻辑的组件 UserMenu 时,问题就开始了。 我最后想要的是

    <Menu mode="horizontal">
      <Menu.Item key="home">
        <Link to={RoutesNames.HOMEPAGE}>Home</Link>
      </Menu.Item>
      <UserMenu user={this.props.currentUser}/>
    </Menu>

我创建了我的子组件 UserMenu。

首先我有这个错误:

    Uncaught TypeError: Cannot read property 'isRootMenu' of undefined
at ProxyComponent.render (SubMenu.js:274)

所以我更新了我的 UserMenu 组件来定义parentMenu

   <SubMenu parentMenu={this.props.menu}

并在我的头文件中将父项设置为parentMenu

   <Menu
     mode="horizontal"
     ref={el => this.menu = el}
   >
     <UserMenu menu={this.menu} user={this.props.currentUser} />
   </Menu>

使用此菜单道具,子菜单会显示,但当鼠标悬停和鼠标移出子菜单时,我仍然收到错误

    Uncaught TypeError: onItemHover is not a function
at onTitleMouseEnter (SubMenu.js:454)

对于这个我完全不知道该怎么办。

感谢您的帮助


菜单将额外的道具传递给它的子菜单。您需要确保这些道具从 UserMenu 组件传递到您渲染的 SubMenu 组件。您可以使用对象扩展运算符来完成此操作。例子:

const UserMenu = (props) => {
     const {username, customProp, ...other} = props;

     return <SubMenu {...other}>
          This is my {customProp} for {username}
     </SubMenu>
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 antd 在组件中创建子菜单失败 的相关文章

随机推荐

  • 垃圾收集器优先和 JMap EOF 错误

    我们正在研究客户的生产服务器堆以检测和解决内存泄漏 为此 我们定期使用 jmap 来收集必要的信息 但上周我们无法进行转储 因为它触发了 EOF 错误并关闭了 Tomcat 实例 我在互联网上搜索但找不到有关此错误的任何具体信息 我们发现它
  • Raphaeljs 在 IE 中将所有文本呈现为斜体

    我在用着拉斐尔 JS http raphaeljs com index html用于直观地表示一些数据 底层技术是 SVG 所以显然在 IE 中并不总是能很好地工作 但是该库在渲染有用的东西方面做得相对不错 尽管它通常看起来很差 无论如何
  • MERGE 语句的语法错误

    我正在尝试在 Go 中执行 MERGE 语句 query MERGE staged ON email 1 WHEN NOT MATCHED THEN INSERT email secret passwd ts newAcct VALUES
  • HTTP 服务的反应式缓存

    我正在使用 RsJS 5 5 0 1 在 Angular 2 中进行缓存 它运行良好 缓存功能的核心是 const observable Observable defer gt actualFn do gt this console log
  • Antlr4中有哪些加速解析的方法?

    我对Antlr4的性能有些怀疑 我目前正在使用 Python 和 Antlr4 与 Java 相比 它非常慢 使用 Antlr4 IntelliJ 插件验证 由于我需要使用更大的代码进行解析 因此我计划切换到 Antlr 最快的语言 例如
  • R中runif和sample的区别?

    他们使用的概率分布是什么 我知道 runif 给出小数 sample 给出整数 但我感兴趣的是 sample 是否也使用 均匀概率分布 考虑以下代码和输出 gt set seed 1 gt round runif 10 1 100 1 27
  • java.util.ConcurrentModificationException - ArrayList

    开始编辑请向下滚动查看更新的代码编辑结束 我已经在谷歌上搜索并搜索了为什么会发生这个异常 我知道它是由一个对象正在读取列表而同时从列表中删除了一个项目引起的 我已经根据我发现的建议更改了我的代码 但时不时我仍然会遇到此异常 并且它使我的应用
  • 整型的 std::isnan 和 std::isinf 重载

    Cppreference 提到了重载std isnan https en cppreference com w cpp numeric math isnan and std isinf https en cppreference com w
  • 使用数字排序合并 pdf 文件

    我正在尝试编写一个 bash 脚本 将目录中的所有 pdf 文件合并到一个 pdf 文件中 命令pdfunite pdf output pdf成功实现了这一点 但它按常规顺序合并输入文档 1 pdf 10 pdf 11 pdf 2 pdf
  • JavaScript KeyCode 值在 Internet Explorer 8 中“未定义”

    我在使用我编写的一些 JavaScript 时遇到问题 但仅限于 Internet Explorer 8 在 Internet Explorer 7 或更早版本或 Mozilla Firefox 3 5 或更早版本上执行此操作没有问题 当我
  • 如何在CoreData中保存多个条目?

    我有以下代码 执行时没有错误 问题是它只保存最后一个条目 Jack Daniels 3 如何更改此设置以便保存所有三个条目 let employees NSEntityDescription insertNewObjectForEntity
  • MS Access 的良好免费替代方案 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android:更改WindowManager添加的View的LayoutParams

    我有叠加层View管理者WindowManager 就像在这个问题 http goo gl OD1ij 简而言之 它看起来像这样 WindowManager wm WindowManager getSystemService WINDOW
  • 在 IIS 7.5 上部署 ASP.NET MVC 应用程序时出现“未配置默认文档”错误

    开发 ASp NET MVC 5 应用程序 在开发计算机 Windows 7 x86 上运行没有问题 当我尝试在 IIS 7 5 Win Server 2008 R2 64 位 上部署它时 出现 3 个错误 无法识别的属性 targetFr
  • codeigniter 中的 is_unique 用于编辑功能

    我有要求 我可以在新的添加函数中对唯一值进行验证 例如 this gt form validation gt set rules email Email required valid email is unique users Email
  • Elasticsearch 多词过滤器

    我对 Elasticsearch 还很陌生 所以这是我的问题 我想用 elasticsearch 进行搜索查询并想用多个术语进行过滤 如果我想搜索用户 tom 那么我希望获得用户 isActive 1 isPrivate 0 和 isOwn
  • JavaScript 绘图库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 对于 JavaScript 交互式绘图库有什么建议吗 只需要绘制不同颜色的线条 多边形 文字即可 兼容
  • 类实例上元类的方法

    我想知道在元类上声明的方法会发生什么情况 我预计 如果您在元类上声明一个方法 它将最终成为一个类方法 但是 行为是不同的 例子 gt gt gt class A object classmethod def foo cls print fo
  • 目前Mono虚拟机的性能如何?

    网络上充斥着不同语言 编译器 虚拟机的各种性能测试 然而 几乎没有任何一个使用真实场景来测试性能 此外 在 Google 上搜索此类基准通常只会产生几年前的基准 因为这些基准有最多的时间来收集它们的链接 你们中有人真正了解不同虚拟机的当前性
  • 使用 antd 在组件中创建子菜单失败

    我正在使用 antd 3 5 4 我有一个包含用户管理项目的菜单 未登录时 菜单有一个带有登录页面链接的菜单项 登录后 菜单有一个子菜单 其中包含多个链接 包括注销 我只是对连接的用户进行简单的测试以显示链接或子菜单 当所有内容都在同一个文