我使用一个Javascript对象来保存侧菜单的信息(例如名称、路径),然后使用两个嵌套映射来构建由MUI个组件组成的实际菜单.这适用于存储为JS基元类型的信息,但我还想在该对象中包含一个图标,它本身是来自MUI的React组件.例子:

  const menuItems = {
    Text: [
      { name: 'TTS', path: 'textTTS', icon: </InboxIcon>, enabled: true },
    ],
    Image: [...],
    Video: [...],
    Live: [...],
  }

然而,我得到了一个错误,因为(我认为)当我将实际组件添加到对象时,它试图判断实际组件:

Unexpected token (26:45)

  24 |   const menuItems = {
  25 |     Text: [
> 26 |       { name: 'TTS', path: 'textTTS', icon: </InboxIcon>, enabled: true },
     |                                              ^
  27 |     ],

引用组件的正确方法是什么,而不实际将组件的contents添加到对象?

仅供参考,以下是我如何构建实际的侧菜单:

let menuComponents = Object.keys(menuItems).map((header, index) => {
    return (
      <List
        key={header}
        subheader={
          <ListSubheader component="div" id="nested-list-subheader">
            {header}
          </ListSubheader>
        }
      >
        {menuItems[header].map((item, index) => {
          return (
            <ListItem
              key={item.path}
              disablePadding
              sx={{ display: 'block' }}
              onClick={() => {
                navigate(item.path);
              }}
            >
              <ListItemButton disabled={item.enabled ? false : true}>
                <ListItemIcon>{item.icon}</ListItemIcon>
                <ListItemText primary={item.name} />
              </ListItemButton>
            </ListItem>
          );
        })}
      </List>
    );
  });

推荐答案

你是说<InboxIcon />?因为我看不到你在哪里打开了它,所以我相信这就是问题所在.

Javascript相关问答推荐

如何使用React渲染器放置根dis?

我不知道为什么我的JavaScript没有验证我的表单

单击更新页面的按钮后,页面刷新;测试/断言超时,有两个标题,但没有一个标题

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

网页自检测外部元素无法加载

扫描qr code后出错whatter—web.js

仅针对RTK查询中的未经授权的错误取消maxRetries

在观察框架中搜索CSV数据

处理时间和字符串时MySQL表中显示的日期无效

如何将Cookie从服务器发送到用户浏览器

如何在Vue 3中创建自定义 Select 组件,并将选项作为HTML而不是props 传递?

编辑文本无响应.onClick(扩展脚本)

使用Java脚本导入gltf场景并创建边界框

如何将数组用作复合函数参数?

无法避免UV:flat的插值:非法使用保留字"

如何在Press上重新启动EXPO-AV视频?

Docent.cloneNode(TRUE)不克隆用户输入

输入的值的类型脚本array.排序()

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作