REACT: Map over nested array of objects

前端 未结 2 940
无人及你
无人及你 2020-12-09 23:09

I am trying to map over array of objects which each array contains another nested array of objects. However, the map does not work on the nested array. How do i map over the

相关标签:
2条回答
  • 2020-12-09 23:48

    This is a working example.

    const dataItems = [{
        title: "title1",
        content: [{
            imageUrl: "http://placehold.it/300x300",
            title: "Campaigns",
            description: "Short description explaining the use of this design in a single sentence."
          },
          {
            imageUrl: "http://placehold.it/300x300",
            title: "Events",
            description: "Short description explaining the use of this design in a single sentence."
          },
          {
            imageUrl: "http://placehold.it/300x300",
            title: "General",
            description: "Short description explaining the use of this design in a single sentence."
          }
        ]
      },
      {
        title: "title2",
        content: [{
            imageUrl: "http://placehold.it/300x300",
            title: "Video Template A",
            description: "Short description explaining the use of this design in a single sentence."
          },
          {
            imageUrl: "http://placehold.it/300x300",
            title: "Video Template A",
            description: "Short description explaining the use of this design in a single sentence."
          }
        ]
      }
    ];
    
    class App extends React.Component {
      render() {
        return <div> 
        {
          dataItems.map((item, index) => {
            return ( <div>
                <h1>{item.title}</h1>
                { item.content.map((c, i) => <div>
                <h3>{c.title}</h3>
                <h3>{c.description}</h3>
                </div>)}
              </div>
            )
          })
        }
        </div>
      }
    }
    
    ReactDOM.render( < App / > , document.getElementById('root'));
    <div id="root"></div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

    0 讨论(0)
  • 2020-12-10 00:06

    Since each element has a content array, you must map over content as well.

    Example

    {dataItems.map((item, index) => (
      <div key={index}>
        <h1>{item.title}</h1>
        {item.content.map((c, i) => (
          <div key={i}>
            <img src={c.imageUrl} />
            <h3>{c.title}</h3>
            <h3>{c.description}</h3>
            <hr />
          </div>
        ))}
      </div>
    ))}
    
    0 讨论(0)
提交回复
热议问题