簡體   English   中英

map 不是函數無法從 api 獲取數據

[英]map is not a function cannot fetch data from api

我在從 api 獲取數據時遇到問題,當映射到我的數據數組時,我收到錯誤消息,指出映射不起作用。 我已經獲取了索引頁面上的數據,然后將其作為道具傳遞給 coinlist 組件。 我在這里找不到我的錯誤。我把相關的組件放在下面。 提前感謝您的時間。 獅子座

硬幣列表

import Coins from './Coins';

export default function CoinList({filteredCoins}) {
  return (
      console.log(filteredCoins),
      filteredCoins.map(coin => {
        return (
          <Coins
            key={coin.id}
            name={coin.name}
            id={coin.id}
            price={coin.current_price}
            symbol={coin.symbol}
            marketcap={coin.total_volume}
            volume={coin.market_cap}
            image={coin.image}
            priceChange={coin.price_change_percentage_24h}
          />
        );
      }))
  )}
  

索引.js

import Head from 'next/head'
import Image from 'next/image'
import styles from '../styles/Home.module.scss'
import Header from '../components/Header';
import CoinList from '../components/CoinList';

export default function Home({filteredCoins}) {
  return (
    <div className={styles.container}>
      <Head>
        <title>Create Next App</title>
        <meta name="description" content="Generated by create next app" />
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <Header />
      <main className={styles.main}>
        <CoinList filteredCoins={filteredCoins}/>
      </main>

      <footer className={styles.footer}>
        <a
          href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
          target="_blank"
          rel="noopener noreferrer"
        >
          Powered by{' '}
          <span className={styles.logo}>
            <Image src="/vercel.svg" alt="Vercel Logo" width={72} height={16} />
          </span>
        </a>
      </footer>
    </div>
  )
}

export const getServerSideProps = async () => {
  const res = await fetch(
    `https://api.coingecko.com/api/v3/coins/
    markets?vs_currency=usd&order=market_cap_
    desc&per_page=50&page=1&sparkline=false`);

  const filteredCoins = await res.json();

  return {
    props: {
      filteredCoins
    }
  };
};

硬幣


function Coins ({name}) {
    return (
        <h1>{name}</h1>
    );
}

export default Coins;

你的修復是props.filteredCoins.filteredCoins.map(coin => {你能試試這個嗎,直接不要試圖把它包裹在對象周圍,

  return {
    props: {
      filteredCoins
    }
  };

要不這樣使用它,因為你把它包內propsfilteredCoinsfilteredCoins

  //console.log(filteredCoins),
  //props.filteredCoins.filteredCoins.map(coin => {

所以下面是避免將數組包裝到{}對象中的簡單方法,

export const getServerSideProps = async () => {
  const res = await fetch(
    `https://api.coingecko.com/api/v3/coins/
    markets?vs_currency=usd&order=market_cap_
    desc&per_page=50&page=1&sparkline=false`);

  const filteredCoins = await res.json();

  return filteredCoins;
};

這就是你所做的, 在此處輸入圖片說明

暫無
暫無

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

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