当前位置: 首页 > 知识库问答 >
问题:

使用JSX通过数组进行映射

龙骏
2023-03-14

我试图通过嵌套的数组使用JSX映射代码。

这是数组

    this.topics = [

        {
            id: 1,
            name: 'first',
            headings : [
                {
                    id: 1,
                    url: 'https://media.w3.org/2010/05/sintel/trailer.mp4',
                    name: 'Sintel movie'
                },
                {
                    id: 2,
                    url: 'https://media.w3.org/2010/05/bunny/movie.mp4',
                    name: 'Bunny Movie'
                },
                {
                    id: 3,
                    url: 'https://techslides.com/demos/sample-videos/small.mp4',
                    name: 'Test page'
                }
            ]
        },

        {
            id: 2,
            name: 'second',
            headings : [
                {
                    id: 1,
                    url: 'https://media.w3.org/2010/05/sintel/trailer.mp4',
                    name: 'Siddntel movie'
                },
                {
                    id: 2,
                    url: 'https://media.w3.org/2010/05/bunny/movie.mp4',
                    name: 'Bunnddy Movie'
                },
                {
                    id: 3,
                    url: 'https://techslides.com/demos/sample-videos/small.mp4',
                    name: 'Test ddpage'
                }
            ]
        }
    ];

以及迄今为止我提出的JSX代码:

  renderSidenav(){
      return(
          <Nav>
              {this.topics.map(topic =>
                  <Dropdown eventKey="3" title="s" icon={<Icon icon="magic" />}>
                      {this.topics[topic].headings.map(heading =>
                          <div onClick = {() => this.handleSelect(heading.id)} key={heading.id}>
                              <Dropdown.Item style={{backgroundColor: '#E9F4E4'}} icon={<Icon icon="dashboard"/>}>
                                  <div>{heading.name}</div>
                              </Dropdown.Item>
                              <Dropdown.Item divider style={{backgroundColor: 'white', height: '2px'}}/>
                          </div>
                    )}
                  </Dropdown>
                )}
         </Nav>
      )
  }

这就是我得到的错误:

TypeError: Cannot read property 'headings' of undefined

我做错了什么?

共有2个答案

戎俊
2023-03-14

只需执行topic.headings.map,而不是this.topics[topic].headings.map

Map函数返回项目,而不是数组中的位置/索引,因此您可以直接从主题调用它。

须彭亮
2023-03-14

不要使用this.topics[topic].headings.map(…)而使用topic.headings.map(…)

这是因为. map()返回一个对象,并试图通过主题[主题]将其用作索引,将为您提供未定义的

 类似资料:
  • 我想通过数组映射,但我得到一个错误:TypeError: locationAddress.map不是一个函数 我是新来的反应和反应钩。我一直试图简化数组,但运气不好。知道为什么这不起作用吗? 编辑:到目前为止,我尝试了答案中的所有更改,但错误仍然存在。我包括了更多的代码和包。json文件。我尝试停用一些函数,如useEffect,现在只有在我尝试键入要映射的输入字段时才会显示错误。 找到解决方案:

  • 问题内容: 有人可以告诉我为什么出现以下错误吗? 我得到期望的结果,并用数据填充 人员 表,但出现此错误。 这是我正在使用的代码: Person.java 地址.java hibernate.cfg.xml 客户端程序 有人可以帮助我了解我为什么会收到该错误吗? 谢谢。 问题答案: 我猜这是由于您在中指定了属性造成的,因此Hibernate尝试以该名称绑定到JNDI,但是JNDI在您的环境中不可用

  • 我有一组参数和一组图像,每组参数都包含一个且仅包含一个图像。我的代码 有了这个代码,我可以上传一个图像随着一个parameter.but我想发送数组中的参数和数组中的图像too.is上传数组参数与数组图像的方式?如果是如何跟踪图像和参数?

  • 问题内容: 有谁知道(如果可能的话,也用破折号)通过对象键对对象数组进行分组然后根据分组创建新的对象数组的方法吗?例如,我有一系列汽车对象: 我想制作一组新的汽车对象,并按以下类别分组: 问题答案: 。简单,并允许在分组结构中的对象中进行一些重复。 但是,OP还要求删除重复的密钥。如果您想一路走下去: 产量: 如果您想使用Underscore.js进行此操作,请注意,其版本称为。

  • 如何在组件返回中使用promise函数,如下所示: 因此,结果将是: 即使我在同一个组件中有几个promise,我也必须使用?

  • 问题内容: 这是从这个问题开始的:要求我在哪里开始一个新的问题。 问题是我只是对JUnit 或有关的东西之类的东西还不够了解,无法用Jeff Bowman提到的方式解决问题。 问题答案: 在您以后的评论中,我指出了差距:您需要使用Mockito作为规则,而将参数化为Runner,而不是相反。 原因是Runner负责报告测试数量,而Parameterized则根据测试方法的数量和参数化输入的数量来操