将嵌套的数组对象值渲染到JSX元素中

时间:2020-10-17 21:43:31

标签: arrays reactjs object methods jsx

我有一个嵌套的对象数组,看起来像这样:

[
  {
    _Category: "Animals",
    _Child: {
       _Obj: [{_Title: "Monkey", _Link: "www.monkeys.com"}], [{_Title: "Monkey", _Link: "www.monkeys.com"}], etc
    }
  },
  {
    _Category: "Fruit",
    _Child: {
       _Obj: [{_Title: "Apple", _Link: "www.apples.com"}], [{_Title: "Pineapple", _Link: "www.pineapples.com"}], etc
    }
  }
]

我正在尝试将每个组的_Title_Link附加到JSX元素中。我已经能够毫无问题地渲染_Categories,但是嵌套值给我带来了麻烦。

当我进入DevTools中的Elements时,我可以看到,每个项目有11个不同的组-这是该特定类别下有多少个对象数组-但_Titles_Links为空。

在下面的代码中,我映射了_Category数据并以这种方式显示了类别。我是否需要为_Child对象做类似的事情-也许是另一幅地图?


代码:

Element = ({ cats }) => {
    return (
        <div>
            {cats
                .filter((cat) => cat._Root === "Quick Links")
                .map((cat) => (
                    
                 <>
                  <div className={"colFor-" + cat._Category}>
                    <h5>{cat._Category}</h5>

                    {cat._Child._Obj.map((item) => (
                        <>
                            <a href={item._Link}>
                                <p>{item._Title}</p>
                            </a>
                            <br />
                        </>
                    ))}
                        
                   </div>
                  </>
                ))
            }
            
        </div>
    )
  }

cats如下所示:

enter image description here


更新:正如@Dominik指出的那样,设置obj的方式不正确,所以我对其进行了更改。

1 个答案:

答案 0 :(得分:2)

根据示例数据,cat._Child._Obj是一个数组,其中的每个项目也是一个数组,所以我认为您需要先将数组弄平,然后再使用map函数。

const myarr = [[{_Title: "Monkey1", _Link: "www.monkeys1.com"}], [{_Title: "Monkey2", _Link: "www.monkeys1.com"}]];
const myarrFlat = myarr.flat();
myarrFlat.map(cat => console.log(cat._Title, cat._Link));