Получение данных из API и вывод на странице?

Для получения данных из API и их вывода на странице в React, можно использовать несколько подходов, в зависимости от того, какой вариант лучше соответствует требованиям проекта.

1. Использование стандартного API fetch:
В этом случае мы будем использовать встроенную функцию fetch() для отправки HTTP-запросов к API и получения данных. Этот метод поддерживается во всех современных браузерах.

Пример кода:

   import React, { useEffect, useState } from 'react';

   function MyComponent() {
     const [data, setData] = useState([]);

     useEffect(() => {
       fetchData();
     }, []);

     const fetchData = async () => {
       try {
         const response = await fetch('https://api.example.com/data');
         const jsonData = await response.json();
         setData(jsonData);
       } catch (error) {
         console.log(error);
       }
     };

     return (
       <div>
         {data.map(item => (
           <p key={item.id}>{item.text}</p>
         ))}
       </div>
     );
   }

В этом примере мы используем хук состояния useState() для хранения полученных данных в переменной data. Хук useEffect() используется для выполнения fetchData() после первого рендера компонента. Внутри функции fetchData() мы выполняем HTTP-запрос к API с помощью fetch() и получаем ответ в формате JSON. Затем мы используем функцию setData() для обновления значения переменной data.

2. Использование библиотеки axios:
Библиотека axios предоставляет более удобный интерфейс для выполнения HTTP-запросов и обработки ошибок. Хотя она не является стандартной частью React, ее можно легко установить и использовать в приложении.

Пример кода:

   npm install axios
   import React, { useEffect, useState } from 'react';
   import axios from 'axios';

   function MyComponent() {
     const [data, setData] = useState([]);

     useEffect(() => {
       fetchData();
     }, []);

     const fetchData = async () => {
       try {
         const response = await axios.get('https://api.example.com/data');
         setData(response.data);
       } catch (error) {
         console.log(error);
       }
     };

     return (
       <div>
         {data.map(item => (
           <p key={item.id}>{item.text}</p>
         ))}
       </div>
     );
   }

В этом примере мы используем функцию axios.get() для выполнения GET-запроса к API и получения данных. Затем мы используем полученный ответ в формате JSON для обновления значения переменной data.

3. Использование библиотеки react-query:
Библиотека react-query предоставляет более мощный инструментарий для работы с данными, включая автоматическое кэширование, инвалидацию кэша и обработку ошибок. Она может быть полезной, если у вас есть сложные требования к управлению данными.

Пример кода:

   npm install react-query
   import React from 'react';
   import { useQuery } from 'react-query';

   function MyComponent() {
     const { isLoading, error, data } = useQuery('data', () =>
       fetch('https://api.example.com/data').then(response =>
         response.json()
       )
     );

     if (isLoading) return <div>Loading...</div>;

     if (error) return <div>Error: {error.message}</div>;

     return (
       <div>
         {data.map(item => (
           <p key={item.id}>{item.text}</p>
         ))}
       </div>
     );
   }

В этом примере мы используем хук useQuery() из библиотеки react-query для выполнения HTTP-запроса и хранения полученных данных. Первый аргумент useQuery() является уникальным идентификатором запроса, а второй аргумент - функция, выполняющая запрос и возвращающая промис с данными. Мы также проверяем статус isLoading и error и отображаем разные сообщения в зависимости от их значения.

Все три подхода предоставляют удобный способ получения данных из API и вывода их на странице в React. В зависимости от ваших требований и предпочтений, вы можете выбрать нужный вариант.