渲染阵列中的图像

时间:2018-10-26 21:56:43

标签: arrays json reactjs create-react-app

我有一个JSON模式,其中包含图像数组,需要将这些图像渲染到ReactJS的轮播中。

api.json

[
  {
    "id": "DR001",
    "propertyFullName": "8838, Brook St, NY",
    "propertyShortName": "Anchorage, AK 99501",
    "features": ["2 beds", "1 bath", "865 sqft"],
    "description": "data.",
    "images": [
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide1",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide2",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide3",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide4",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide5",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide6"
    ],
    "status": true
  },
  {
    "id": "DR002",
    "propertyFullName": "8838, Brook St, NY",
    "propertyShortName": "Anchorage, AK 99501",
    "features": ["2 beds", "1 bath", "865 sqft"],
    "description": "data.",
    "images": [
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide1",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide2",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide3",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide4",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide5",
      "http://placehold.it/1000x400/ffffff/c0392b/&text=slide6"
    ]
  }
]

我正在对第一个数组进行硬编码,例如features

{APIData.map((apiData, index) => {
                  return (
                    <>
                      <Heading subtitle>
                        <span name={index}>{apiData.features[0]}</span>
                        <span class="middle-dot" aria-hidden="true">
                          &nbsp;
                        </span>
                        <span>{apiData.features[1]}</span>
                        <span class="middle-dot" aria-hidden="true">
                          &nbsp;
                        </span>
                        <span>{apiData.features[2]}</span> <br />
                        <span>
                          <p>{apiData.description}</p>
                        </span>
                      </Heading>
                      <hr />
                    </>
                  );
                })}

因为,我知道只有3个功能,但是在images的情况下,它是动态的。我怎么克服这个问题?

图像正在其他<div>中渲染,我已经尝试过类似的方法

            <Carousel {...settings}>
              {APIData.map((images, index) => {
                return (
                  <>{<img src={images.images} alt={index} />}</>
                );
              })}
            </Carousel>

2 个答案:

答案 0 :(得分:0)

使用您已有的代码,它将最终像这样遍历每个属性的图像:

<Carousel {...settings}>
  {APIData.map((data, index) => {
     data.images.map((image, index) => {
        return <img key={index} src={image} alt={index} />
     } 
  })}
</Carousel>

答案 1 :(得分:-1)

您可以拥有一个无状态组件,并将其呈现在原始map内,就像这样

const Images = ({list}) => list.map(image => <img src={image}/>);

myArr.map(item => // some DOM here, and, at last: <Images list={item.images}>)

您知道,不要在另一个电话中重复进行map通话,我认为这看起来有点难看