Axios не получает ответа при первой загрузке

#javascript #reactjs #axios

Вопрос:

Я новичок в React JS и пытаюсь получить данные внутри useEffect, и у меня есть отдельная функция для моего api, но когда я проверяю данные.далее в консоли.журнал при первой загрузке данных нет, но после добавления нескольких изменений он работает нормально, но при обновлении страницы по-прежнему появляется ошибка. Кроме того, я заметил, когда попытался утешить.войдите в функцию, в которой объявлен Axios или api, при первой загрузке приложения уже есть данные. Кто-нибудь сталкивался с этой проблемой? Или мой подход неверен?

Вот мои коды /src/App.js

 useEffect(async () => {
    const res = await service.apiPokemon.fetchAll();
    console.log(res.data.next)
}, []);
 

/src/api/pokemon.js

 import axios from 'axios';
const URL = 'https://pokeapi.co/api/v2/pokemon';

export const fetchAll = async () => {
    try {
        const res = await axios.get(URL);
        console.log(res.data.next);
        
        return res;
    } catch (error) {
        console.log(error);
    };
};
 

Ответ №1:

Это очень распространенная проблема. Ваш контент загружается перед извлечением данных. Чтобы решить эту проблему, вы можете добавить условие не отображать свой контент до тех пор, пока не получите данные:

   let [pokemonsList, setPokemonsList] = useState([])

  // Your useEffect hook to fetch data on mount

  return (
    { pokemonsList.lenght > 0 amp;amp; // If you are sure you'll receive pokemons
      <div> {pokemonList.map((pokemon) => (
         <p> {pokemon.name} </p>
      )} </div>
    }
  )

 

Теперь вы увидите имена покемонов только тогда, когда у вас будет список.
Вы также можете добавить сообщение о загрузке в случае, если для ответа потребуется время с помощью редактирования и селекторов.

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

1. Спасибо за ответ, но я думаю, что мой вопрос немного сбивает с толку. В моем компоненте «Эффект использования в приложении» есть эффект использования, в котором был вызван мой отдельный файл или api, внутри файла api, когда я регистрируюсь в журнале консоли, я уже получаю ответ, но когда я возвращаю данные и регистрируюсь в компоненте приложения, ответа нет.

2. После повторной попытки исправить эту ошибку, по какой-то причине она отлично работает после того, как я снова запустил этот проект. Также спасибо за ответ.

3. Я надеюсь, что это было полезно для вас.