react не может вызывать и распознавать компоненты с помощью axios и отображать пустой экран

#reactjs #api #axios #react-hooks

Вопрос:

Я создаю веб-сайт для поиска книг с помощью приложения create-react. Сначала я использую открытый ключ api и создаю пользовательский интерфейс, но мой react не может вызвать компонент

вот родительский компонент

 import React, { useEffect, useState } from 'react';
import BookItem from './BookItem';
import axios from 'axios';

const BookList = () => {


    const [books, setBooks] = useState(null)
    const [loading, setLoading] = useState(false)

    useEffect(() => {
        const fetchData = async () => {
            setLoading(true)
            try {
                const response = await axios.get('ttb/api/ItemList.aspx?ttbkey={private_api_key}amp;QueryType=Bestselleramp;MaxResults=50amp;start=1amp;SearchTarget=Bookamp;output=jsamp;Version=20131101', )
                setBooks(response.data.books)
            } catch (e) {
                console.log(e)
            }
            setLoading(false)
        } 
        fetchData()
    }, [])

    if (loading) {
        return <div>Now on loading...</div>
    }
    if (!books) {
        return null
    }
    return (
        <div>
            {
                books.map(item => (<BookItem key={item.url} item={item}/>))
            }
        </div>
    );
};
 

а вот дочерний компонент, получающий реквизиты от родителя

 import React from 'react';

const BookItem = ({ item }) => {
    const {title, author, cover, link, description, pubDate } = item
    return (
        <div>
            <div className="thumbnail">
                <a href={link}>
                    <img src={cover} alt="coverImg"/>
                </a>
            </div>
            <div className="info">
                <h2>{title}</h2>
                <ul>
                    <li><p>{author}</p></li>
                    <li><p>{description}</p></li>
                    <li><p>{pubDate}</p></li>
                </ul>
            </div>
        </div>
    );
};

export default BookItem;
 

Я могу видеть
Теперь при загрузке по

  if (loading) {
            return <div>Now on loading...</div>
        }
 

но после того, как он загрузился, я вижу только пустой экран
, и под родительским компонентом нет компонента
введите описание изображения здесь

подобный этому…

я ожидаю, что появится информация об этой книге по api. где я могу это исправить, чтобы увидеть

Комментарии:

1. Проверьте books , получил ли он значение, так как он вернется null , когда books не имеет значения.

2. Никогда не рекомендуется инициализировать переменную с нулевым значением, когда она предназначена для хранения массива.

3. можете ли вы опубликовать результат API