簡體   English   中英

Map 在 React 中的數組上

[英]Map over an array in React

我正在構建一個顯示視頻游戲和有關它們的各種信息的應用程序,從 API 中提取數據。我正在嘗試顯示可玩該游戲的所有平台,PlayStation、Xbox 等。JSON 有一系列平台對於每個游戲,每個游戲都包含一個平台 object 和一個名稱(我試圖顯示)。 地圖真的讓我感到困惑我真的很感謝有人對此的幫助。 我將包括 JSON 的一個片段。

  "count": 1326,
  "next": "https://api.rawg.io/api/games?key=8d1a421af80b4f9b8650de12d9943010&page=2&search=destiny",
  "previous": null,
  "results": [
    {
      "slug": "destiny",
      "name": "Destiny",
      "playtime": 24,
      "platforms": [
        {
          "platform": {
            "id": 1,
            "name": "Xbox One",
            "slug": "xbox-one"
          }
        },
        {
          "platform": {
            "id": 18,
            "name": "PlayStation 4",
            "slug": "playstation4"
          }
        },
        {
          "platform": {
            "id": 14,
            "name": "Xbox 360",
            "slug": "xbox360"
          }
        },
        {
          "platform": {
            "id": 16,
            "name": "PlayStation 3",
            "slug": "playstation3"
          }
        }
      ],
const GameCard = ({
  game: {
    name,
    background_image,
    metacritic,
    released,
    platforms,
    platform,
    esrb_rating,
  },
}) => {
  return (
    <div className="bg-gray-600/30 m-5 p-0 rounded-xl shadow-xl shadow-gray-700 border-solid border-2 border-gray-700 max-w-[640px] hover:scale-105 ease-in duration-300">
      <img
        className="rounded-t-xl h-[360px] w-[640px] border-b-2 border-gray-600"
        alt={name}
        src={
          background_image
            ? background_image
            : "https://via.placeholder.com/640x360"
        }
      />
      <h1 className="text-center text-4xl text-gray-900 tracking-wide font-bold mt-2 font-mono">
        {name}
      </h1>
      <div className="text-gray-800 text-center font-mono py-2">
        {platforms ? platforms.map(() => <span></span>) : null}

根據W3Schools

map() 通過為每個數組元素調用 function 創建一個新數組。

map() 為數組中的每個元素調用一次 function。

map() 不會對空元素執行 function。

map() 不會改變原始數組。

這會從一組平台對象創建一組名稱,例如您顯示的 json 片段中的 results.platforms。

platforms.map(platform => <span>{platform.platform.name}</span>)

如果你在將那部分帶到代碼中稱為平台的變量之后在平台上 map,那么你可以在它上面 map,如下所示:

 <div className="text-gray-800 text-center font-mono py-2"> {platforms? platforms.map((item) => <span key={item.platform.id}> {item.platform.name} </span>): null } </div>

不要忘記將鍵插入 span 標簽內。 它將作為每個 span 標簽的唯一標識符。

參考:列表和鍵

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM