doutizhou5312 2018-01-02 17:37
浏览 23
已采纳

转换php循环以反应es6

How can I convert a PHP loop into react es6. the following is my PHP code

    foreach ( $navigation_bar as $menuType => $menus ) {
        ?>
        <div class="side-nav-header"><?=$menus['title']?></div>     
        <?php

        foreach ( $menus ['sub_modules'] as $attr => $submenu ) {
            ?>
            <div class="side-nav-subheader"><?=$submenu['title']?></div>
            <?php
            if (is_array ( $submenu ['menuitem'] )) {
                foreach ( $submenu ['menuitem'] as $menuitem ) {
                    ?>
                    <a href="<?=$menuitem['link']?>"><?=$menuitem['title']?></a>
                    <?php
                }
            }
        }
    }

I have tried to do the following but I don't think I fully understand what is going on

let menuList = resp.body.recordset.record;
                console.log(menuList);
                Object.keys(menuList).map(function(keyName, keyIndex) {
                      // use keyName to get current key's name
                      //   // and a[keyName] to get its value
                      Object.keys(menuList[keyName][keyIndex]).map(function(keyName, keyIndex) {
                          console.log(keyName);
                          console.log(keyIndex);
                          Object.keys(menuList[keyName][keyIndex]['sub_modules']).map(function(keyName, keyIndex) {
                            console.log(keyName);
                            console.log(keyIndex);
                          });
                      });
                })
                console.log(menuList.map((e, i) =>(<div key={i}>{e}</div>)));
                this.state = { menuList : menuList }
  • 写回答

1条回答 默认 最新

  • doudou8081 2018-01-02 21:59
    关注

    Perhaps something like this:

    let menuData = resp.body.recordset.record
    let menuList = []
    
    menuData.navigation_bar.forEach(menus => {
      menuList.push(<div className="side-nav-header">{ menus.title }</div>)
    
      menus.sub_modules.forEach(submenu => {
        menuList.push(<div className="side-nav-subheader">{ submenu.title }</div>)
    
        if (submenu.menuitem.length) {
          submenu.menuitem.forEach(menuitem => {
            menuList.push(<a href="{ menuitem.link }">{ menuitem.title }</a>)
          })
        }
      })
    })
    

    This assumes the following structure for menuData:

    {
      navigation_bar: [
        {
          title: "Title 1",
          sub_modules: [
            {
              title: "Sub Module 1",
              menuitem: [
                {
                  title: "Menu Item 1",
                  link: "http://link1.com"
                }
              ]
            }
          ]
        },
        {
          title: "Title 2",
          sub_modules: [
            {
              title: "Sub Module 2",
              menuitem: [
                {
                  title: "Menu Item 2",
                  link: "http://link2.com"
                }
              ]
            }
          ]
        }
      ]
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器