简体   繁体   English

React Component没有正确解构json

[英]React Component not destructuring json properly

I am fooling around with a news api in react in order to learn more about components and how they work/reading in api calls dynamically.为了更多地了解组件以及它们如何在 api 调用中动态工作/读取,我正在玩弄一个新闻 api。 However, I cannot get my component to correctly destructure my articles json.但是,我无法让我的组件正确解构我的文章 json。

For now, I am making a call to the api, pulling in "Business Articles" just by copy and pasting for now, and exporting that as "BlogPosts".现在,我正在调用 api,现在只需通过复制和粘贴来提取“Business Articles”,然后将其导出为“BlogPosts”。 My "ArticlesBox.jsx" contains my props.我的“ArticlesBox.jsx”包含我的道具。 And in the "ArticlesWrapper.jsx" I declare a function that should read in the props for the imported component - and in the "ArticlesWrapper()" is where I am trying to map my news articles.js to create all of the news article posts from the api call.在“ArticlesWrapper.jsx”中,我声明了一个应该在导入组件的道具中读取的函数 - 在“ArticlesWrapper()”中,我试图映射我的 newsarticles.js 以创建所有新闻文章来自 api 调用的帖子。

So far, it seems to map the appropriate amount of articles but none of what I am trying to map appears.到目前为止,它似乎映射了适当数量的文章,但我试图映射的内容都没有出现。 In other words, it just makes a ton of boxes with my alt "Failure" on it.换句话说,它只是用我的alt“失败”制作了大量的盒子。

My Goal is to eventually be able to map through this api and render a ton of news articles at once no matter how big the call - but as of right now I am having trouble completing that task.我的目标是最终能够通过这个 api 映射并渲染大量新闻文章,无论调用有多大——但截至目前,我无法完成该任务。 I've attached my latest iteration of an attempt below.我在下面附上了我最新的一次尝试迭代。 thank you guys in advance!提前谢谢你们!

ArticlesBoxes.jsx:文章框.jsx:

    import "./ArticleBoxes.css";

export default function ArticleBoxes(props) {
  return (
    <div>
      <div>
        <img src={props.urlToImage} className="imgImage" alt="Failure"></img>
      </div>
      <div className="blogContent">
        <h2 className="blogTitle">
          <a className="blogTitleAnchor" href={props.url}>
            {props.title}
          </a>
        </h2>

        <div className=""></div>

        <ul className=""></ul>
        <div className=""></div>
      </div>
    </div>
  );
}

ArticlesWrapper.jsx:文章Wrapper.jsx:

import "./ArticlesWrapper.css";
import ArticleBoxes from "./ArticleBoxes.jsx";
import BlogPosts from "./articles.js";

function createBlogPost(newsArticle) {
  return (
    <ArticleBoxes
      key={newsArticle.id}
      src={newsArticle.urlToImage}
      href={newsArticle.url}
      blogTitleAnchor={newsArticle.title}
    />
  );
}

export default function ArticlesWrapper() {
  return <div className="articlesWrapper">{BlogPosts.map(createBlogPost)}</div>;
}

and here are the articles:以下是文章:

const BlogPosts = [
  {
    source: {
      id: null,
      name: "New York Post",
    },
    author: "Sam Raskin",
    title:
      "Wild video reportedly shows drunken flier shove girlfriend, slug airport worker - New York Post ",
    description:
      "The viral, 43-second clip captures the moment the would-be EasyJet passenger violently pushed his gal pal down and punched an airline employee after the flier wasn’t allowed on a flight",
    url:
      "https://nypost.com/2022/06/26/easyjet-passenger-shoves-girlfriend-punches-airport-worker/",
    urlToImage:
      "https://nypost.com/wp-content/uploads/sites/2/2022/06/easy-jet-comp.jpg?quality=75&strip=all&w=1024",
    publishedAt: "2022-06-26T19:17:00Z",
    content:
      "Wild video shows a drunken British vacationer shoving his girlfriend to the floor and slugging a security worker at an airport in England after he was banned from a flight, according to reports. \r\nTh… [+1742 chars]",
  },
  {
    source: {
      id: null,
      name: "CNBC",
    },
    author: "Jessica Sonkin",
    title:
      "‘Apathetic’ investors will embrace banks: RBC top analyst predicts comeback in year’s second half - CNBC",
    description:
      "RBC Capital Markets' top banking analyst Gerard Cassidy expects strong revenue growth and optimism surrounding credit will boost banks.",
    url:
      "https://www.cnbc.com/2022/06/26/apathetic-investors-to-embrace-banks-rbc-top-analyst-sees-comeback.html",
    urlToImage:
      "https://image.cnbcfm.com/api/v1/image/106839744-1613124725309-gettyimages-1277228344-_dsc0449.jpeg?v=1656270600&w=1920&h=1080",
    publishedAt: "2022-06-26T19:13:35Z",
    content:
      "Investors who are \"apathetic\" or negative toward banks will change their stance in the year's second half, according to RBC Capital Markets' top banking analyst.\r\nGerard Cassidy predicts bullishness … [+2567 chars]",
  },
  {
    source: {
      id: null,
      name: "Yahoo Entertainment",
    },
    author: "Alexandra Semenova",
    title:
      "Stocks pace towards worst start since 1970: What to know this week - Yahoo Finance",
    description:
      "The end of the second quarter and the first half of the year will bring a busy week to markets that remain on pace for their worst start to a year in decades...",
    url:
      "https://finance.yahoo.com/news/what-to-know-this-week-in-markets-june-27-184417186.html",
    urlToImage:
      "https://s.yimg.com/ny/api/res/1.2/cB7MggYAQk3eBkA6pJRp4A--/YXBwaWQ9aGlnaGxhbmRlcjt3PTEyMDA7aD04MDA-/https://s.yimg.com/os/creatr-uploaded-images/2022-06/800b17a0-f542-11ec-bdf3-77a6aa355e37",
    publishedAt: "2022-06-26T18:44:17Z",
    content:
      "The week ahead will bring to an end the second quarter and the first half of what has been a challenging 2022 for investors.\r\nSeveral key economic reports, including core PCE inflation the Federal Re… [+8151 chars]",
  },
  {
    source: {
      id: "cnn",
      name: "CNN",
    },
    author: "Parija Kavilanz",
    title:
      "Just keep your returns: Stores weigh paying you not to bring back unwanted items - CNN",
    description: "",
    url: "https://www.cnn.com/2022/06/26/business/retail-returns/index.html",
    urlToImage:
      "https://media.cnn.com/api/v1/images/stellar/prod/220626130102-target-shopper-0518.jpg?c=16x9&q=w_800,c_fill",
    publishedAt: "2022-06-26T17:15:00Z",
    content:
      "The chaotic mix of record fuel prices and an unending supply chain crisis have retailers considering the unthinkable: Instead of returning your unwanted items, just keep them.\r\nIn recent weeks, some … [+3981 chars]",
  },
  {
    source: {
      id: "the-washington-post",
      name: "The Washington Post",
    },
    author: "Joe Yonan",
    title:
      "Sweet potato salad with fresh salsa is a thrifty, tasty dish - The Washington Post",
    description:
      "This recipe from the team behind the « Bosh » vegan cooking channel is hearty, healthy — and affordable.",
    url:
      "https://www.washingtonpost.com/food/2022/06/26/sweet-potato-salsa-salad-recipe/",
    urlToImage:
      "https://www.washingtonpost.com/wp-apps/imrs.php?src=https://arc-anglerfish-washpost-prod-washpost.s3.amazonaws.com/public/THCSP3XTCII6ZLAWR67XDFGNPA.jpg&w=1440",
    publishedAt: "2022-06-26T17:00:00Z",
    content:
      "Placeholder while article actions load\r\nHenry Firth and Ian Theasby have a simple answer to the question of how to save money on food: Cook.\r\nIn their latest book, Bosh on a Budget, the friends behin… [+6482 chars]",
  },
  {
    source: {
      id: null,
      name: "Yahoo Entertainment",
    },
    author: "Sam Ro",
    title: "The bad economic news that the Fed is looking for - Yahoo Finance",
    description:
      "Federal Reserve Chair Jerome Powell reiterated the central bank’s top priority right now: Bringing down inflation.",
    url:
      "https://finance.yahoo.com/news/the-bad-economic-news-that-the-fed-is-looking-for-155728245.html",
    urlToImage:
      "https://s.yimg.com/os/creatr-uploaded-images/2022-06/f6ece680-f567-11ec-bfd6-300e76ca8a9a",
    publishedAt: "2022-06-26T15:57:28Z",
    content:
      "This post was originally published on TKer.com.\r\nFederal Reserve Chair Jerome Powell reiterated the central banks top priority right now: Bringing down inflation.\r\nIts unconditional, our commitment, … [+9229 chars]",
  },
  {
    source: {
      id: "fox-news",
      name: "Fox News",
    },
    author: "Stephen Sorace",
    title:
      "Baby formula shipment arrives from overseas in Houston, enough for 1.5M bottles - Fox News",
    description:
      "A cargo plane carrying more than 150,000 pounds of baby formula from overseas landed at Bush Intercontinental Airport in Houston early Sunday, according to a local report.",
    url: "https://www.foxnews.com/us/baby-formula-overseas-houston",
    urlToImage:
      "https://static.foxnews.com/foxnews.com/content/uploads/2022/06/baby-formula-empty-shelf.jpg",
    publishedAt: "2022-06-26T15:51:22Z",
    content:
      "A cargo plane from Germany landed at Bush Intercontinental Airport in Houston, Texas, early Sunday, carrying more than 150,000 pounds of baby formula, according to a local report.\r\nThe shipment, part… [+1609 chars]",
  },
  {
    source: {
      id: "cnn",
      name: "CNN",
    },
    author: "Ramishah Maruf",
    title: "All the recession warning signs this week - CNN",
    description:
      "It's the question everyone is asking: Are we about to enter a recession?",
    url:
      "https://www.cnn.com/2022/06/26/business/recession-signs-roundup/index.html",
    urlToImage:
      "https://media.cnn.com/api/v1/images/stellar/prod/220625141843-new-construction-california-0614-restricted.jpg?c=16x9&q=w_800,c_fill",
    publishedAt: "2022-06-26T15:42:00Z",
    content:
      "Its the question everyone is asking: Are we about to enter a recession?\r\nA tepid stock market, soaring inflation, and rising interest rates have left Americans less than optimistic about the state of… [+4793 chars]",
  },
  {
    source: {
      id: null,
      name: "Yahoo Entertainment",
    },
    author: "Mike Bebernes",
    title:
      "Is it worth risking recession to get inflation under control? - Yahoo News",
    description:
      "Interest rates hikes can be a reliable tool for taming runaway prices, but they often lead to stifled economic growth and a spike in unemployment.",
    url:
      "https://news.yahoo.com/is-it-worth-risking-recession-to-get-inflation-under-control-150844387.html",
    urlToImage:
      "https://s.yimg.com/os/creatr-uploaded-images/2022-06/154e6ed0-f560-11ec-96bf-b0175df91c43",
    publishedAt: "2022-06-26T15:08:44Z",
    content:
      "The 360 shows you diverse perspectives on the days top stories and debates.\r\nWhats happening\r\nBy most measures, the United States economy has thrived in the two-plus years since it was abruptly derai… [+8173 chars]",
  },
  {
    source: {
      id: null,
      name: "The Daily Hodl",
    },
    author: "Daily Hodl Staff",
    title:
      "Billionaire Mark Cuban Analyzes One of His Largest Crypto Investments, Outlines How Play-To-Earn Economies ... - The Daily Hodl",
    description:
      "Billionaire and Shark Tank star Mark Cuban is weighing in on how blockchain-based play-to-earn (P2E) games can revamp their economy.",
    url:
      "https://dailyhodl.com/2022/06/26/billionaire-mark-cuban-analyzes-one-of-his-largest-crypto-investments-outlines-how-play-to-earn-economies-can-recover/",
    urlToImage:
      "https://dailyhodl.com/wp-content/uploads/2022/02/gamestop-partners-with-nft.jpg",
    publishedAt: "2022-06-26T14:30:13Z",
    content:
      "Billionaire and Shark Tank star Mark Cuban is weighing in on how blockchain-based play-to-earn (P2E) games can revamp their economy.\r\nIn a new interview with Bankless, Cuban, who’s an investor in Axi… [+1973 chars]",
  },
  {
    source: {
      id: "google-news",
      name: "Google News",
    },
    author: null,
    title:
      "Why This Crypto Crash Is Different: Don't Fight The... - Investor's Business Daily",
    description: null,
    url:
      "https://news.google.com/__i/rss/rd/articles/CBMiVmh0dHBzOi8vd3d3LmludmVzdG9ycy5jb20vbmV3cy9iaXRjb2luLWNyYXNoLWNyeXB0by1pY2UtYWdlLWZlZC1yYXRlLWhpa2VzLWFyZS1yZWFzb24v0gEA?oc=5",
    urlToImage: null,
    publishedAt: "2022-06-26T14:27:00Z",
    content: null,
  },
  {
    source: {
      id: null,
      name: "msnNOW",
    },
    author: null,
    title:
      "Lawn mower recall: This popular mower can catch fire just sitting in your garage - msnNOW",
    description: null,
    url:
      "https://www.msn.com/en-us/lifestyle/shopping/lawn-mower-recall-this-popular-mower-can-catch-fire-just-sitting-in-your-garage/ar-AAYSJmw?li=BBnb2gh",
    urlToImage: null,
    publishedAt: "2022-06-26T13:12:59Z",
    content: null,
  },
  {
    source: {
      id: null,
      name: "Benzinga",
    },
    author: "Henry Khederian",
    title:
      "So Which Will Happen First, Ethereum At $10K Or Dogecoin At $0.50? - Benzinga - Benzinga",
    description:
      "Every week, Benzinga conducts a survey to collect sentiment on what traders are most excited about, interested in or thinking about as they manage and build their personal portfolios.",
    url:
      "https://www.benzinga.com/markets/cryptocurrency/22/04/26557793/which-will-first-ethereum-at-10k-or-dogecoin-at-0-50",
    urlToImage:
      "https://cdn.benzinga.com/files/images/story/2022/04/09/polynesia-3021072_1.jpg?width=1200&height=800&fit=crop",
    publishedAt: "2022-06-26T13:12:00Z",
    content:
      "Every week, Benzinga conducts a survey to collect sentiment on what traders are most excited about, interested in or thinking about as they manage and build their personal portfolios.\r\nThis week, we … [+1593 chars]",
  },
  {
    source: {
      id: "associated-press",
      name: "Associated Press",
    },
    author: "Paul Wiseman",
    title:
      "Did corporate greed fuel inflation? It's not biggest culprit - The Associated Press - en Español",
    description:
      "WASHINGTON (AP) — Furious about surging prices at the gasoline station and the supermarket, many consumers feel they know just where to cast blame: On greedy companies that relentlessly jack up prices and pocket the profits.",
    url:
      "https://apnews.com/article/inflation-russia-ukraine-covid-health-government-and-politics-999a756b89b09b65d335856cf570737e",
    urlToImage:
      "https://storage.googleapis.com/afs-prod/media/30649c6512354e78abee8fd35d537916/3000.jpeg",
    publishedAt: "2022-06-26T13:08:06Z",
    content:
      "WASHINGTON (AP) Furious about surging prices at the gasoline station and the supermarket, many consumers feel they know just where to cast blame: On greedy companies that relentlessly jack up prices … [+8733 chars]",
  },
  {
    source: {
      id: "google-news",
      name: "Google News",
    },
    author: null,
    title:
      "Inflation is why tips are down for some service-sector workers - USA TODAY",
    description: null,
    url:
      "https://news.google.com/__i/rss/rd/articles/CBMicGh0dHBzOi8vd3d3LnVzYXRvZGF5LmNvbS9zdG9yeS9tb25leS9wZXJzb25hbGZpbmFuY2UvMjAyMi8wNi8yNi9pbmZsYXRpb24tdGlwcy1kb3duLXJlc3RhdXJhbnRzLWJhcnMvNzcwNjY3NDAwMS_SAQA?oc=5",
    urlToImage: null,
    publishedAt: "2022-06-26T13:00:59Z",
    content: null,
  },
  {
    source: {
      id: null,
      name: "CNBC",
    },
    author: "Tanaya Macheel",
    title:
      "No-fee trading has arrived for crypto. Here's what that may mean for revenue at these companies - CNBC",
    description:
      "Crypto companies are at a crossroads with the introduction of zero-fee trading. Analysts are uncertain about how these trading platforms may handle it.",
    url:
      "https://www.cnbc.com/2022/06/26/no-fee-trading-has-arrived-for-crypto-heres-what-that-may-mean-for-revenue-at-these-companies.html",
    urlToImage:
      "https://image.cnbcfm.com/api/v1/image/106868438-1618431329101-gettyimages-1232307162-COINBASE_IPO.jpeg?v=1656247277&w=1920&h=1080",
    publishedAt: "2022-06-26T12:34:21Z",
    content: null,
  },
  {
    source: {
      id: "cnn",
      name: "CNN",
    },
    author: "Paul R. La Monica, CNN Business",
    title: "Electronic Arts is still the odd one out in gaming - CNN",
    description:
      "All things considered, video game leader Electronic Arts is having a pretty decent year despite inflation worries, recession fears and other macroeconomic headwinds. Shares of EA are only down about 2% in 2022, a drop that's not nearly as bad as the rest of t…",
    url:
      "https://www.cnn.com/2022/06/26/investing/stocks-week-ahead/index.html",
    urlToImage:
      "https://cdn.cnn.com/cnnnext/dam/assets/220623155025-electronic-arts-fifa-game-file-super-tease.jpg",
    publishedAt: "2022-06-26T12:00:00Z",
    content:
      "A version of this story first appeared in CNN Business' Before the Bell newsletter. Not a subscriber? You can sign up right here.\r\nNew York (CNN Business)All things considered, video game leader Elec… [+4339 chars]",
  },
  {
    source: {
      id: null,
      name: "CNBC",
    },
    author: "Macklin Fishman",
    title:
      "Exxon Mobil CEO cautions against an abrupt energy transition, warning underinvestment leads to high gas prices - CNBC",
    description:
      "The CEO of Exxon Mobil cautions against an abrupt energy transition, warning underinvestment will lead to high gas prices.",
    url:
      "https://www.cnbc.com/2022/06/26/exxon-mobil-ceo-darren-woods-on-energy-transition-gas-prices.html",
    urlToImage:
      "https://image.cnbcfm.com/api/v1/image/107078620-1655836217414-Z-CNBC_220624_MarketsPolitics_DarrenIntvFormal_Dirty_10.jpg?v=1655836425&w=1920&h=1080",
    publishedAt: "2022-06-26T11:05:01Z",
    content:
      'Exxon Mobil CEO Darren Woods warns that an abrupt transition to renewable energy will cause society to "pay a high price."\r\nThe national average price for a gallon of gasoline is currently nearly $5,… [+1702 chars]',
  },
  {
    source: {
      id: "fortune",
      name: "Fortune",
    },
    author: "Shawn Tully",
    title:
      "The housing market is weakening fast—but there are no signs yet that a 2008-style crash is coming - Fortune",
    description:
      "But a slowdown in housing market gains isn't the same as a drop in prices. Quite the contrary: The fundamentals suggest values will still be rising at the close of 2022, and keep slogging ahead through next year.",
    url:
      "https://fortune.com/2022/06/26/housing-market-outlook-prices-appreciation/",
    urlToImage:
      "https://content.fortune.com/wp-content/uploads/2022/06/Real-Estate-13.jpg?resize=1200,600",
    publishedAt: "2022-06-26T11:00:00Z",
    content: "Skip to Content",
  },
  {
    source: {
      id: "reuters",
      name: "Reuters",
    },
    author: null,
    title: "French energy giants urge consumers to cut energy use - Reuters",
    description:
      "The heads of France's big energy companies on Sunday urged individuals and businesses to limit power consumption immediately to prepare for a looming energy crisis.",
    url:
      "https://www.reuters.com/business/energy/french-energy-companies-call-immediately-limiting-energy-use-2022-06-25/",
    urlToImage:
      "https://www.reuters.com/resizer/waL_fZbMKICoos0Z_6TE8DQAi3k=/1200x628/smart/filters:quality(80)/cloudfront-us-east-2.images.arcpublishing.com/reuters/PZEB2J6Y7FNI5NPQIRVUZRZACU.jpg",
    publishedAt: "2022-06-26T10:48:00Z",
    content:
      "PARIS, June 25 (Reuters) - The heads of France's big energy companies on Sunday urged individuals and businesses to limit power consumption immediately to prepare for a looming energy crisis.\r\n\"We ne… [+1942 chars]",
  },
];

export default BlogPosts;

try this尝试这个

  <ArticleBoxes
      key={newsArticle.source.id}
      src={newsArticle.urlToImage}
      href={newsArticle.url}
      blogTitleAnchor={newsArticle.title}
    />

I'm guessing if you checked your console you'd see that id is undefined.我猜如果你检查你的控制台,你会发现id是未定义的。 You need to define unique ids for each one too since in your data most of the ids are null您还需要为每个 ID 定义唯一的 ID,因为在您的数据中大多数 ID 为null

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM