首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React不渲染第二个贴图

React不渲染第二个贴图
EN

Stack Overflow用户
提问于 2019-12-31 03:48:50
回答 1查看 45关注 0票数 0

我正在尝试在map函数中做第二个map。它显示了我的console.log,但没有呈现任何内容。

下面是我的对象:

代码语言:javascript
复制
  const sidebarItems = [
    {
      icon: DashboardIcon,
      name: 'DASHBOARD',
      path: '/dashboard',
    },
    {
      icon: TaskManagementIcon,
      name: 'TASK MANAGEMENT',
      path: '/task-management',
      subpages: [
        {
          icon: TaskManagementIcon,
          name: 'BOARD VIEW',
          path: 'task-management/board',
        },
        {
          icon: TaskManagementIcon,
          name: 'LIST VIEW',
          path: 'task-management/list',
        },
      ],
    }
  ];

下面是我的react组件:

代码语言:javascript
复制
function Sidebar({ items, location }) {
  return (
    <div className="app-sidebar">
      <div className="app-sidebar-items">
        {items.map(item => {
          const path = `/app${item.path}`;
          if (path === location.pathname) {
            if (typeof item.subpages !== 'undefined') {
              item.subpages.map(i => {
                return <p>Foo</p>
              });
            }
          }

          return <p>Bar</p>
        })}
      </div>
    </div>
  );
}

上面的代码总是显示"Bar“文本。奇怪的是,如果我执行console.log(i),它会向我显示子项...为什么不动呢?

谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2019-12-31 04:05:00

您忘记了return子页面映射。如果没有该返回,函数将继续执行,直到到达return <p>Bar</p>,所以这就是您将看到的所有内容。

JSX只是带有一些语法糖的纯javascript。渲染JSX只会在返回时执行任何操作。

代码语言:javascript
复制
    items.map(item => {
      const path = `/app${item.path}`;
      if (path === location.pathname) {
        if (typeof item.subpages !== 'undefined') {
          return item.subpages.map(i => {
          // ^ added
            return <p>Foo</p>
          });
        }
      }

      return <p>Bar</p>
    })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59536125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档