Не могу отобразить данные о ценах, используя Ebay - PullRequest
0 голосов
/ 09 октября 2019

Я успешно запрашиваю данные из eBay с помощью Finding Advanced API. Я отображаю элементы для отображения на странице. Я могу отобразить заголовок и изображение для запрашиваемых элементов. Однако у меня возникают проблемы, когда я пытаюсь опустить цену, которая вложена в массив.

Данные выглядят так:

   {
itemId: [
"120901386991"
],
title: [
"1952 Topps Mickey Mantle Chase Card Box 18 packs 5 1950s or 1960's cards per box"
],
globalId: [
"EBAY-US"
],
subtitle: [
"3 BX LOT. 1 VINTAGE PK PER 25 BOXES* LOOK 4 1952 MANTLE"
],
primaryCategory: [
{
categoryId: [
"213"
],
categoryName: [
"Baseball Cards"
]
}
],
secondaryCategory: [
{
categoryId: [
"156521"
],
categoryName: [
"Vintage Non-Sport Cards"
]
}
],
galleryURL: [
"https://thumbs4.ebaystatic.com/m/m1mtMB65mAApWQ2EhJy4qWA/140.jpg"
],
viewItemURL: [
"https://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=2&toolid=10044&campid=5338164673&customid=watchbask&lgeo=1&vectorid=229466&item=120901386991"
],
paymentMethod: [
"PayPal"
],
autoPay: [
"true"
],
location: [
"USA"
],
country: [
"US"
],
shippingInfo: [
{
shippingServiceCost: [
{
@currencyId: "USD",
__value__: "0.0"
}
],
shippingType: [
"Free"
],
shipToLocations: [
"Worldwide"
],
expeditedShipping: [
"false"
],
oneDayShippingAvailable: [
"false"
],
handlingTime: [
"1"
]
}
],
sellingStatus: [
{
currentPrice: [
{
@currencyId: "USD",
__value__: "118.0"
}
],
convertedCurrentPrice: [
{
@currencyId: "USD",
__value__: "118.0"
}
],
sellingState: [
"Active"
],
timeLeft: [
"P13DT19H16M11S"
]
}
],
listingInfo: [
{
bestOfferEnabled: [
"false"
],
buyItNowAvailable: [
"false"
],
startTime: [
"2012-04-23T16:52:17.000Z"
],
endTime: [
"2019-10-23T16:52:17.000Z"
],
listingType: [
"FixedPrice"
],
gift: [
"false"
],
watchCount: [
"444"
]
}
],
returnsAccepted: [
"false"
],
condition: [
{
conditionId: [
"1000"
],
conditionDisplayName: [
"Brand New"
]
}
],
isMultiVariationListing: [
"false"
],
pictureURLLarge: [
"https://i.ebayimg.com/00/s/NTAwWDMxNA==/z/sT8AAOSw62VZv9qQ/$_1.JPG"
],
topRatedListing: [
"false"
]
},

Я передал реквизиты, используяобозначение «карты», которое является предметом eBay. Я также могу видеть реквизиты в google dev tools.

Таким образом, хотя я могу успешно отобразить заголовок, используя {card.title} в реакции

, когда я использую {card.sellingStatus.convertedCurrentPrice}, я получаю эту ошибку:

TypeError: Невозможно прочитать свойство 'convertCurrentPrice' с неопределенным

Я пробовал несколько других вариантов, но, похоже, ничего не работает.

Обратите внимание, что здесь находится мой компонент «Карта», который я пытаюсь отобразить (этот код показывает другую альтернативу, которую я использую для цены.

  const Card = props => {
  const { card } = props;
  return (
    <div className="col-md-3">
      <div className="card">
        <div className="card-block">
          {/* <h5 className="card-title">{card.title}</h5> */}
          <div className="mx-auto" style={{ width: 200 }}>
            <img
              src={card.pictureURLLarge}
              style={{
                width: 190,
                height: 200
              }}
              className="img-responsive"
              alt="..."
            />
          </div>
          <div className="card-body">
            <h2>{card.sellingStatus.convertedCurrentPrice["__value__"]}</h2>
          </div>
        </div>
      </div>
    </div>

Обратите внимание, что вот моя функция карты

 {card_list.map(item => (
                      <Card key={item.id} card={item} />

Я что-то здесь упускаю?

1 Ответ

1 голос
/ 09 октября 2019

Как видите, sellingStatus - это массив. поэтому вам придется либо сопоставить, либо получить значение, подобное этому.

card.sellingStatus['convertedCurrentPrice]["__value__"]

или

card.sellingStatus[0].currentPrice[0]["__value__"];

, так как вам не нужно несколько <h2>

card.sellingStatus && card.sellingStatus[0].currentPrice[0]["__value__"];

Так что это не выдает ошибку, пока обещание разрешается.

...