javascript - 通过 JSON 中的多个嵌套对象进行映射

标签 javascript reactjs json

我正在使用 React 开发一个简单的项目,并且是 React 的新手,我在通过给定的 json 文件进行映射以将所需对象发送到不同组件时遇到了问题。

这是我得到的 JSON 文件(通过 api)

{
   "trees":{
      "name":"a",
      "age":"9",
      "height":"10",
      "location":"park"
   },
   "cars":{
      "name":"b",
      "age":"30",
      "height":"10",
      "location":"park"
   },
   "bikes":{
      "name":"c",
      "age":"110",
      "height":"10",
      "location":"park"
   },.........................

这是我在 App.js 中获取的 json。我的想法是将其完全发送到另一个组件(Data.js),然后从 data.js 发送到另一个有树、汽车、自行车的组件。 即使在执行 const d = [jsonfile] 之后,我也无法在任何级别映射此 json 文件,即使在此之后我在映射时仍未定义。

App.js

const[Data,setData] = useState([]);

  useEffect(()=>{
    fetch('API-HERE').then((result)=>{result.json().then((resp)=>{
      setData(resp); 
    })})
  },[])

return (
    <div className="App">
      <DataFetched data={Data} />
    </div>
  );

在此之后,我无法在 DataFetched.js 中映射以将其发送给另一个 child ,只能将树木、汽车、自行车分开,以便可以读取它们的属性。

最佳答案

使用 Object.entries 迭代 JSON 属性。

你可以这样试试。

import React from "react";

const DataFetched = ({ data }) => {
    if (!data) {
        return null;
    }
    return Object.entries(data).map(
        ([key, { name, age, height, location }]) => {
            return (
                <div key={key}> 
                    <div>{name}</div>
                    <div>{age}</div>
                    <div>{height}</div>
                    <div>{location}</div>
                </div>
            );
        }
    );
};

export default DataFetched;

或者您可以从另一个子组件接收数据。

import React from "react";

const MyChildComponent = ({ data: { name, age, height, location } }) => {
    return (
        <div>
            <div>{name}</div>
            <div>{age}</div>
            <div>{height}</div>
            <div>{location}</div>
        </div>
    );
};

const DataFetched = ({ data }) => {
    if (!data) {
        return null;
    }
    return Object.entries(data).map(
        ([key, value]) => {
            return (
                <MyChildComponent data={value}/>
            );
        }
    );
};

export default DataFetched;

关于javascript - 通过 JSON 中的多个嵌套对象进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70332821/

相关文章:

javascript - 如何调用bootstrap datepicker的javascript函数?

php - 关于mysql json_extract()的问题

javascript - 从 json 数组中删除特定元素

javascript - Angular 2 Child Routing (v3) 'Cannot read property ' 注释' of undefined'

javascript - 从递归函数expressjs返回空数组?

javascript - Firefox 不会动画化 SVG 大小的变化

javascript - 在设定的时间后从 DOM 中删除元素

reactjs - 如何使用 nextJS 管理 localStorage?

reactjs - 每次在 ReactJs 中重新渲染组件时都会重置实例变量

json - R:将特定行转换为列