简体   繁体   English

显示嵌套的反应组件

[英]Displaying nested react components

I wanted to display following json data in nested react components.For example a list title with sub list I have tried using for loops but for some reason the component doesn't displays我想在嵌套的反应组件中显示以下 json 数据。例如,我尝试使用 for 循环的带有子列表的列表标题,但由于某种原因组件不显示

Choose Your topping 1选择你的浇头 1

  • Regurlar定期
  • Stuffed塞满
  • Choose Your topping 2 选择你的浇头 2
  • Garllic大蒜
  • chilli辣椒
  • Structure of Json Data Json数据结构
    let MenuContents = [{ Title:'Choose one', List:{ Option1:'Regular Base', Option2:'Stuffed Crust', Option3: 'Thick Base', Option4: 'Thin Base' } }, { Title:'Choose one', List:{ Option1:'Garlic Dip', Option2:'Chilli Dip', Option3: 'BBq Dip', Option4: 'Mayo' } }, { Title:'Choose one', List:{ Option1:'Tomato Base', Option2:'BBq Base', Option3: 'Garlic', Option4: 'Mayo' } }] MenuContents.map((x) => { return ( <div> <div className="AddoneTitle"> <li> <h3>{x.Title}</h3> </li> </div> <div className='Choose'> { Object.keys(x.List).forEach(function(key) { return( <li>x.List[key]</li>) }) } </div> </div> ) });

    This should work, forEach doesn't return an array of list items as map does, also you were missing {} inside li这应该有效,forEach 不会像 map 那样返回列表项数组,而且您在li中也缺少{}

              MenuContents.map((x) => {
              return (
                <div>
                  <div className="AddoneTitle">
                    <li>
                      <h3>{x.Title}</h3>
                    </li>
                  </div>
                  <div className='Choose'>
                   {
                    Object
                    .keys(x.List)
                    .map(function(key) {
                     return( <li>{x.List[key]}</li>)
                    })
                   }
                </div>
              </div>);
             })
    

    Use利用

    {
        x.List.map(record => {
            return (
                <li key={Object.keys(record)}>
                    {Object.values(record)}
                </li>
            )
        })
    }
    

    instead of:代替:

     {
      Object.keys(x.List).forEach(function(key) {
    
    
       return( <li>x.List[key]</li>)
      
      })
      
     }
    

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM