Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何从数组中的嵌套对象中提取一个对象_Arrays_Reactjs_Object - Fatal编程技术网

Arrays 如何从数组中的嵌套对象中提取一个对象

Arrays 如何从数组中的嵌套对象中提取一个对象,arrays,reactjs,object,Arrays,Reactjs,Object,我从一个打开的API获取数据。从那个API我想在我的浏览器上显示图像。但问题是在图像数组中有3个图像URL。使用数组的映射方法后,我调用了第一个对象[0],但它不起作用。我正在使用React js作为我的前端应用程序。 import React, { useEffect, useState } from "react"; import "./ActivitiesList.css"; import axios from "axios"; import "./ActivitiesList.css"

我从一个打开的API获取数据。从那个API我想在我的浏览器上显示图像。但问题是在图像数组中有3个图像URL。使用数组的映射方法后,我调用了第一个对象[0],但它不起作用。我正在使用React js作为我的前端应用程序。

import React, { useEffect, useState } from "react";
import "./ActivitiesList.css";
import axios from "axios";

import "./ActivitiesList.css";

function ActivitiesList() {
  const [activities, setactivities] = useState({ data: [] });
  const [show, setshow] = useState(10);

  useEffect(() => {
    fetchingData();
  }, []);

  const fetchingData = () => {
    axios
      .get("/activities")
      .then(response => {
        //console.log("response", response);
        setactivities({ data: response.data.data }); 
      })
      .catch(err => console.log(err));
  };

  return (
    <div className="EventList">
      <section className="our-event">
        <div className="grid-container">
          {activities.data.slice(0, show).map((list, index) => {
            return (
              <div key={index}>
                <a
                  href={list.info_url} /
                  style={{
                    cursor: "pointer",
                    textDecoration: "none",
                    color: "black"
                  }}
                  target="a_blank"
                >
                  <div className="whole">
                    <div className="Personcontainer">
                      <div className="Box">
                        {list.description.images.map((img, index) => {
                          return (
                            <img
                              src={img.url[0]} //IN HERE I TRY TO SHOW FIRST OBJECT
                              alt="pics"
                              style={{ width: "270px", height: "270px" }}
                            />
                          );
                        })}
                      </div>
                    </div>
                  </div>

                </a>
              </div>
            );
          })}
        </div>
        {show < activities.data.length && (
          <button onClick={() => setshow(show + 10)} className="Button">
            loadmore
          </button>
        )}
      </section>
    </div>
  );
}

export default ActivitiesList;
{
  "meta": {
    "count": "96",
    "next": "http://open-api.myhelsinki.fi/v1/activities/?limit=1&start=1"
  },
  "data": [
    {
      "id": "f67de4f6-d23e-49a7-b9dd-63d68df533a3",
      "name": {
        "fi": "Purjehdus 1700-luvun tyyliin tykkisluuppi Dianalla",
        "en": "Cannon sloop Diana´s sailings",
        "sv": "Seglingar med kanonslupen Diana",
        "zh": null
      },
      "source_type": {
        "id": 3,
        "name": "MyHelsinki"
      },
      "info_url": "https://www.suomenlinnatours.com/en/cannon-sloop-diana?johku_product=7",
      "modified_at": "2020-01-27T09:37:27.221Z",
      "location": {
        "lat": 60.145111083984375,
        "lon": 24.987560272216797,
        "address": {
          "street_address": "Suomenlinna Tykistölahti Pier",
          "postal_code": null,
          "locality": "Helsinki"
        }
      },
      "description": {
        "intro": null,
        "body": "<p>Luvassa on amiraali Chapamin tahdittama mielenkiintoinen laivamatka valistusajan Viaporiin. Dianan purjehduksien aikana nähdään Suomenlinnaa mereltä käsin ja kuullaan saaristolaivaston kiehtovasta historiasta. Osallistujat pääsevät halutessaan avustamaan 1700-luvun univormuihin sonnustautunutta miehistöä purjeiden nostossa ja laskussa, lisäksi muutama reipas pääsee mukaan soutuharjoitukseen.</p>\r\n\r\n<p>Purjehdukset lähtevät Suomenlinnan Tykistölahden laiturista. Suomenlinnaan pääsee JT-Linen vesibussilla tai HSL:n lautalla Kauppatorilta (venematka ei kuulu lipun hintaan). Diana on avovene, joten säänmukainen varustus on tärkeä.&nbsp;<br />\r\n<br />\r\n<span><span>Lasten meriseikkailu – perhepurjehdus ajalla 26.6.- 3.8.2019<br />\r\nkeskiviikkoisin, torstaisin ja lauantaisin kello 12.30<br />\r\nElokuun lauantaisin 10.8., 17.8., 24.8. ja 31.8.2019 kello 12.30.<br />\r\n<br />\r\nPurjehdus 1700-luvun tyyliin – yleisöpurjehdus ajalla 26.6.- 3.8.2019:<br />\r\nKeskiviikkoisin, torstaisin ja lauantaisin kello 15.30<br />\r\nElokuun lauantaisin 10.8., 17.8., 24.8. ja 31.8.2019 kello 15.30</span></span><br />\r\n&nbsp;</p>\r\n",
        "images": [ // FROM HERE I WANT TO SHOW FIRST OBJECT URL.
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          },
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_2.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          },
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_3.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          }
        ]
      },
      "tags": [
        {
          "id": "myhelsinki:45",
          "name": "sea"
        },
        {
          "id": "myhelsinki:836",
          "name": "suomenlinna"
        },
        {
          "id": "myhelsinki:793",
          "name": "history"
        }
      ],
      "where_when_duration": {
        "where_and_when": "Suomenlinna, kesäkuusta elokuuhun",
        "duration": "N. 1h 45min"
      }
    }
  ],
  "tags": {
    "myhelsinki:45": "sea",
    "myhelsinki:793": "history",
    "myhelsinki:836": "suomenlinna"
  }
}
这是我的React js组件。

import React, { useEffect, useState } from "react";
import "./ActivitiesList.css";
import axios from "axios";

import "./ActivitiesList.css";

function ActivitiesList() {
  const [activities, setactivities] = useState({ data: [] });
  const [show, setshow] = useState(10);

  useEffect(() => {
    fetchingData();
  }, []);

  const fetchingData = () => {
    axios
      .get("/activities")
      .then(response => {
        //console.log("response", response);
        setactivities({ data: response.data.data }); 
      })
      .catch(err => console.log(err));
  };

  return (
    <div className="EventList">
      <section className="our-event">
        <div className="grid-container">
          {activities.data.slice(0, show).map((list, index) => {
            return (
              <div key={index}>
                <a
                  href={list.info_url} /
                  style={{
                    cursor: "pointer",
                    textDecoration: "none",
                    color: "black"
                  }}
                  target="a_blank"
                >
                  <div className="whole">
                    <div className="Personcontainer">
                      <div className="Box">
                        {list.description.images.map((img, index) => {
                          return (
                            <img
                              src={img.url[0]} //IN HERE I TRY TO SHOW FIRST OBJECT
                              alt="pics"
                              style={{ width: "270px", height: "270px" }}
                            />
                          );
                        })}
                      </div>
                    </div>
                  </div>

                </a>
              </div>
            );
          })}
        </div>
        {show < activities.data.length && (
          <button onClick={() => setshow(show + 10)} className="Button">
            loadmore
          </button>
        )}
      </section>
    </div>
  );
}

export default ActivitiesList;
{
  "meta": {
    "count": "96",
    "next": "http://open-api.myhelsinki.fi/v1/activities/?limit=1&start=1"
  },
  "data": [
    {
      "id": "f67de4f6-d23e-49a7-b9dd-63d68df533a3",
      "name": {
        "fi": "Purjehdus 1700-luvun tyyliin tykkisluuppi Dianalla",
        "en": "Cannon sloop Diana´s sailings",
        "sv": "Seglingar med kanonslupen Diana",
        "zh": null
      },
      "source_type": {
        "id": 3,
        "name": "MyHelsinki"
      },
      "info_url": "https://www.suomenlinnatours.com/en/cannon-sloop-diana?johku_product=7",
      "modified_at": "2020-01-27T09:37:27.221Z",
      "location": {
        "lat": 60.145111083984375,
        "lon": 24.987560272216797,
        "address": {
          "street_address": "Suomenlinna Tykistölahti Pier",
          "postal_code": null,
          "locality": "Helsinki"
        }
      },
      "description": {
        "intro": null,
        "body": "<p>Luvassa on amiraali Chapamin tahdittama mielenkiintoinen laivamatka valistusajan Viaporiin. Dianan purjehduksien aikana nähdään Suomenlinnaa mereltä käsin ja kuullaan saaristolaivaston kiehtovasta historiasta. Osallistujat pääsevät halutessaan avustamaan 1700-luvun univormuihin sonnustautunutta miehistöä purjeiden nostossa ja laskussa, lisäksi muutama reipas pääsee mukaan soutuharjoitukseen.</p>\r\n\r\n<p>Purjehdukset lähtevät Suomenlinnan Tykistölahden laiturista. Suomenlinnaan pääsee JT-Linen vesibussilla tai HSL:n lautalla Kauppatorilta (venematka ei kuulu lipun hintaan). Diana on avovene, joten säänmukainen varustus on tärkeä.&nbsp;<br />\r\n<br />\r\n<span><span>Lasten meriseikkailu – perhepurjehdus ajalla 26.6.- 3.8.2019<br />\r\nkeskiviikkoisin, torstaisin ja lauantaisin kello 12.30<br />\r\nElokuun lauantaisin 10.8., 17.8., 24.8. ja 31.8.2019 kello 12.30.<br />\r\n<br />\r\nPurjehdus 1700-luvun tyyliin – yleisöpurjehdus ajalla 26.6.- 3.8.2019:<br />\r\nKeskiviikkoisin, torstaisin ja lauantaisin kello 15.30<br />\r\nElokuun lauantaisin 10.8., 17.8., 24.8. ja 31.8.2019 kello 15.30</span></span><br />\r\n&nbsp;</p>\r\n",
        "images": [ // FROM HERE I WANT TO SHOW FIRST OBJECT URL.
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          },
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_2.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          },
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_3.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          }
        ]
      },
      "tags": [
        {
          "id": "myhelsinki:45",
          "name": "sea"
        },
        {
          "id": "myhelsinki:836",
          "name": "suomenlinna"
        },
        {
          "id": "myhelsinki:793",
          "name": "history"
        }
      ],
      "where_when_duration": {
        "where_and_when": "Suomenlinna, kesäkuusta elokuuhun",
        "duration": "N. 1h 45min"
      }
    }
  ],
  "tags": {
    "myhelsinki:45": "sea",
    "myhelsinki:793": "history",
    "myhelsinki:836": "suomenlinna"
  }
}
import React,{useffect,useState}来自“React”;
导入“/ActivitiesList.css”;
从“axios”导入axios;
导入“/ActivitiesList.css”;
函数活动列表(){
const[activities,setactivities]=useState({data:[]});
const[show,setshow]=useState(10);
useffect(()=>{
获取数据();
}, []);
常量获取数据=()=>{
axios
.get(“/activities”)
。然后(响应=>{
//控制台日志(“响应”,响应);
setactivities({data:response.data.data});
})
.catch(err=>console.log(err));
};
返回(
{activities.data.slice(0,show.map)(列表,索引)=>{
返回(
);
})}
{show
荷德莫尔
)}
);
}
导出默认活动列表;
这里是OpenAPI的JSON文件。

import React, { useEffect, useState } from "react";
import "./ActivitiesList.css";
import axios from "axios";

import "./ActivitiesList.css";

function ActivitiesList() {
  const [activities, setactivities] = useState({ data: [] });
  const [show, setshow] = useState(10);

  useEffect(() => {
    fetchingData();
  }, []);

  const fetchingData = () => {
    axios
      .get("/activities")
      .then(response => {
        //console.log("response", response);
        setactivities({ data: response.data.data }); 
      })
      .catch(err => console.log(err));
  };

  return (
    <div className="EventList">
      <section className="our-event">
        <div className="grid-container">
          {activities.data.slice(0, show).map((list, index) => {
            return (
              <div key={index}>
                <a
                  href={list.info_url} /
                  style={{
                    cursor: "pointer",
                    textDecoration: "none",
                    color: "black"
                  }}
                  target="a_blank"
                >
                  <div className="whole">
                    <div className="Personcontainer">
                      <div className="Box">
                        {list.description.images.map((img, index) => {
                          return (
                            <img
                              src={img.url[0]} //IN HERE I TRY TO SHOW FIRST OBJECT
                              alt="pics"
                              style={{ width: "270px", height: "270px" }}
                            />
                          );
                        })}
                      </div>
                    </div>
                  </div>

                </a>
              </div>
            );
          })}
        </div>
        {show < activities.data.length && (
          <button onClick={() => setshow(show + 10)} className="Button">
            loadmore
          </button>
        )}
      </section>
    </div>
  );
}

export default ActivitiesList;
{
  "meta": {
    "count": "96",
    "next": "http://open-api.myhelsinki.fi/v1/activities/?limit=1&start=1"
  },
  "data": [
    {
      "id": "f67de4f6-d23e-49a7-b9dd-63d68df533a3",
      "name": {
        "fi": "Purjehdus 1700-luvun tyyliin tykkisluuppi Dianalla",
        "en": "Cannon sloop Diana´s sailings",
        "sv": "Seglingar med kanonslupen Diana",
        "zh": null
      },
      "source_type": {
        "id": 3,
        "name": "MyHelsinki"
      },
      "info_url": "https://www.suomenlinnatours.com/en/cannon-sloop-diana?johku_product=7",
      "modified_at": "2020-01-27T09:37:27.221Z",
      "location": {
        "lat": 60.145111083984375,
        "lon": 24.987560272216797,
        "address": {
          "street_address": "Suomenlinna Tykistölahti Pier",
          "postal_code": null,
          "locality": "Helsinki"
        }
      },
      "description": {
        "intro": null,
        "body": "<p>Luvassa on amiraali Chapamin tahdittama mielenkiintoinen laivamatka valistusajan Viaporiin. Dianan purjehduksien aikana nähdään Suomenlinnaa mereltä käsin ja kuullaan saaristolaivaston kiehtovasta historiasta. Osallistujat pääsevät halutessaan avustamaan 1700-luvun univormuihin sonnustautunutta miehistöä purjeiden nostossa ja laskussa, lisäksi muutama reipas pääsee mukaan soutuharjoitukseen.</p>\r\n\r\n<p>Purjehdukset lähtevät Suomenlinnan Tykistölahden laiturista. Suomenlinnaan pääsee JT-Linen vesibussilla tai HSL:n lautalla Kauppatorilta (venematka ei kuulu lipun hintaan). Diana on avovene, joten säänmukainen varustus on tärkeä.&nbsp;<br />\r\n<br />\r\n<span><span>Lasten meriseikkailu – perhepurjehdus ajalla 26.6.- 3.8.2019<br />\r\nkeskiviikkoisin, torstaisin ja lauantaisin kello 12.30<br />\r\nElokuun lauantaisin 10.8., 17.8., 24.8. ja 31.8.2019 kello 12.30.<br />\r\n<br />\r\nPurjehdus 1700-luvun tyyliin – yleisöpurjehdus ajalla 26.6.- 3.8.2019:<br />\r\nKeskiviikkoisin, torstaisin ja lauantaisin kello 15.30<br />\r\nElokuun lauantaisin 10.8., 17.8., 24.8. ja 31.8.2019 kello 15.30</span></span><br />\r\n&nbsp;</p>\r\n",
        "images": [ // FROM HERE I WANT TO SHOW FIRST OBJECT URL.
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          },
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_2.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          },
          {
            "url": "https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_3.jpg",
            "copyright_holder": "",
            "license_type": {
              "id": 1,
              "name": "All rights reserved."
            }
          }
        ]
      },
      "tags": [
        {
          "id": "myhelsinki:45",
          "name": "sea"
        },
        {
          "id": "myhelsinki:836",
          "name": "suomenlinna"
        },
        {
          "id": "myhelsinki:793",
          "name": "history"
        }
      ],
      "where_when_duration": {
        "where_and_when": "Suomenlinna, kesäkuusta elokuuhun",
        "duration": "N. 1h 45min"
      }
    }
  ],
  "tags": {
    "myhelsinki:45": "sea",
    "myhelsinki:793": "history",
    "myhelsinki:836": "suomenlinna"
  }
}
{
“元”:{
“计数”:“96”,
“下一步”:http://open-api.myhelsinki.fi/v1/activities/?limit=1&start=1"
},
“数据”:[
{
“id”:“f67de4f6-d23e-49a7-b9dd-63d68df533a3”,
“姓名”:{
“fi”:“Purjehdus 1700 luvun Tyylin tykkisluuppi Dianalla”,
“恩”:“大炮单桅帆船戴安娜的航行”,
“sv”:“Seglingar med kanonslupen Diana”,
“zh”:空
},
“源类型”:{
“id”:3,
“名称”:“MyHelsinki”
},
“信息url”:https://www.suomenlinnatours.com/en/cannon-sloop-diana?johku_product=7",
“修改位置”:“2020-01-27T09:37:27.221Z”,
“地点”:{
“lat”:60.145111083984375,
“lon”:24.987560272216797,
“地址”:{
“街道地址”:“Suomenlinna Tykistölahti码头”,
“邮政编码”:空,
“地点”:“赫尔辛基”
}
},
“说明”:{
“简介”:空,
“正文”:"关于阿米拉利·查帕明(amiraali Chapamin)的研究表明,他是一个有价值的研究者。她是一个有着悠久历史的研究者,lisäksi muutama repas päsee mukaan soutuharjoitukseen.

\r\n\r\nPurjehdukset lähtevät Suomenlinnan Tykistölahden lauden lista.suomenlinana päsee JT Linen vesibussilla tai HSL:n lautalla kaupportatorlta(venematka ei kulu lipun hintaan)戴安娜·阿沃维尼,佐滕·桑姆卡宁·瓦鲁斯塔斯·塔尔克。
\r\n
\r\n梅里塞卡鲁-佩赫普杰赫杜斯·阿贾拉,2019年6月26日至3月8日
\r\nkskiviikkoisin,托尔斯坦辛加劳安塔辛,凯洛12.30
\r\n劳安塔辛10.8,17.8,24.8.2019年8月31日凯洛12.30
\r\r\nhdus ajalla 26.6.-3.8.2019:
\r\nkskiviikkoisin,torstaisin ja lauantaisin kello 15.30
\r\n nElokuun lauantaisin 10.8,17.8,24.8.ja 31.8.2019 kello 15.30
\r\n, “images”:[//从这里我想显示第一个对象URL。 { “url”:”https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana.jpg", “版权持有人”:“, “许可证类型”:{ “id”:1, “名称”:“保留所有权利。” } }, { “url”:”https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_2.jpg", “版权持有人”:“, “许可证类型”:{ “id”:1, “名称”:“保留所有权利。” } }, { “url”:”https://edit.myhelsinki.fi/sites/default/files/2017-06/Tykkisluuppi_Diana_3.jpg", “版权持有人”:“, “许可证类型”:{ “id”:1, “名称”:“保留所有权利。” } } ] }, “标签”:[ { “id”:“myhelsinki:45”, “名称”:“海” }, { “id”:“myhelsinki:836”, “名称”:“索梅林纳” }, { “id”:“myhelsinki:793”, “名称”:“历史” } ], “where_when_duration”:{ “where_and_when”:“Suomenlinna,kesäkuusta Elokuhun”, “持续时间”:“不超过1小时45分钟” } } ], “标签”:{ “迈赫尔辛基:45”:“海”, “迈赫尔辛基:793”:“历史”, “迈赫尔辛基:836”:“索梅林纳” } }
你看起来像这样吗-演示

假设您的状态如下

状态={
项目:{
元:{
计数:“96”,
下一个:“http://open-api.myhelsinki.fi/v1/activities/?limit=1&start=1"
},
数据:[
{
id:“f67de4f6-d23e-49a7-b9dd-63d68df533a3”,
姓名:{
fi:“Purjehdus 1700 luvun Tyylin tykkisluuppi Dianalla”,
en:“大炮单桅帆船戴安娜的航行”,
sv:“Seglingar med kanonslupen Diana”,
zh:null
},
来源类型:{
id:3,
名称:“迈赫尔辛基”
},
信息地址:
"https://www.suomenlinnatours.com/en/cannon-sloop-diana?johku_product=7",
修改位置:“2020-01-27T09:37:27.221Z”,
地点:{
纬度:60.145111083984375,
伦敦:24.987560272216797,
地址:{
街道地址:“Suomenlinna Tykistölahti码头”,
邮政编码:空,
地点:"他