Как запрашивать данные в ReactJS с fetch
год назад·2 мин. на чтение
Несколько простых шагов для запроса данных с сервера в ReactJS с помощью fetch API.
1. Определите значение по умолчанию
Вызовfetch()
является асинхронным методом, поэтому нам нужно использовать значение по умолчанию до тех пор, пока REST API не вернет ответ. Определение неправильных значений по умолчанию вызовет ошибки JavaScript еще до вызова fetch()
, поэтому убедитесь, что значение по умолчанию указано в React JS коде.
В нашем случае, так как мы ожидаем массив из вызова API, значением по умолчанию будет пустой массив.
const defaultValue = []
2. Объявите состояние React для хранения данных из API
Нам нужно объявить состояние React для хранения списка пользователей, возвращенного из ответа на вызов API. Обновление состояния с помощьюsetUsers()
гарантирует, что экран обновится после получения списка пользователей из вызова REST API.
// Состояние для хранения списка пользователей const [users, setUsers] = useState(defaultValue);
3. JavaScript функции для получения данных из API и сохранения ответа
Нам нужно объявить JS-функцию для получения данных с внешнего URL-адреса следующим образом:- Мы получаем данные из URL-адреса
https://jsonplaceholder.typicode.com/todos/
с помощью JavaScriptfetch()
API. - Добавьте функцию обратного вызова в
then()
для преобразования ответа в формат JSON. - Состояние пользователя React обновляется списком пользователей из ответа API.
// Функция для сохранения данных const getApiData = async () => { const response = await fetch( "https://jsonplaceholder.typicode.com/todos/" ).then((response) => response.json()); // Обновим состояние setUsers(response); };
4. Добавьте useEffect
для получения API при загрузке страницы
После того, как мы определили функцию для получения данных API, она должна срабатывать при загрузке страницы. getApiData()
, добавленный в React useEffect()
с пустым массивом зависимостей, который гарантирует, что код срабатывает один раз при загрузке страницы.
useEffect(() => { getApiData(); }, []);
5. Генерация JSX-кода с состоянием React
Наконец, нам нужно отобразить сведения о каждом пользователе. Следовательно, мы сгенерируем JSX-код для каждого пользователя с помощьюArray.map()
, а функция обратного вызова вернет <div></div>
с user.id
и user.title
.
<div className="app"> {users.map((user) => ( <div className="item-container"> Id:{user.id} <div className="title">Title:{user.title}</div> </div> ))} </div>
6. Вызов API через Axios
Основной недостаток вызоваfetch()
заключается в том, что нам пришлось вручную конвертировать данные из API в формат JSON. Существует npm пакет axios, который сам управляет преобразованием JSON. После установки npm install axios
в package.json
, можно реализовать метод getAPIData()
через axios следующим образом:
import axios from "axios"; const getApiData = async () => { const response = await axios( "https://jsonplaceholder.typicode.com/todos/" ); setUsers(response); };
Полный код решения
import React, { useEffect, useState } from "react"; import ReactDOM from "react-dom"; import "./styles.css"; function App() { const [users, setUsers] = useState([]); const getApiData = async () => { const response = await fetch( "https://jsonplaceholder.typicode.com/todos/" ).then((response) => response.json()); setUsers(response); }; useEffect(() => { getApiData(); }, []); return ( <div className="app"> {users.map((user) => ( <div className="item-container"> Id:{user.id} <div className="title">Title:{user.title}</div> </div> ))} </div> ); } const rootElement = document.getElementById("root"); ReactDOM.render(<App />, rootElement);
Чтобы изучить React с нуля и понять все тонкости работы с React пройдите наш авторский курс от создателей канала DevMagazine - Быстрый старт в React.
Как добавить шрифт в React приложение
2 года назад·2 мин. на чтение
В HTML шрифт используется для указания начертания шрифта, размера шрифта, типографики текста. Вы можете добавлять шрифты в свое React приложение разными способами. В этой статьей рассмотрим два быстрых способа добавления шрифтов в React приложение.
Использование link
со ссылкой на шрифт
Можно ссылаться на любые шрифты, размещенные в Интернете, используя тег <link>
внутри HTML-файла. Давайте рассмотрим пример применения Google шрифтов с помощью тега <link>
.
- Перейдите на fonts.google.com
- Выберите понравившийся шрифт и скопируйте его имя

- Вставьте в
index.html
линк со ссылкой на шрифт. Если ваше приложение создано с помощьюcreate-react-app
, вы найдетеindex.html
в папкеpublic
.
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Dancing+Script&display=swap" rel="stylesheet">
- Настройте css класс с помощью веб-шрифта в таблице стилей, указав
font-family: 'Font Name'
, например, вindex.css
:
.font-dancing-script { font-family: 'Dancing Script'; }
- Примените селектор в любом React компоненте
// App.jsx import './App.css'; function App() { return ( <div className="font-dancing-script"> <p>Hello</p> </div> ); } export default App;
Использование загруженного шрифта с @font-face
В некоторых ситуациях подключение шрифтов онлайн может быть недоступно или запрещено. Классический пример: пользователи вашего приложения используют интранет и имеют ограниченный доступ к Интернету. В таких случаях шрифты должны быть загружены локально и упакованы в приложение.
@font-face
— это CSS правило для определения шрифта путем указания шрифта с помощью URL-адреса.
- Создайте папку с именем
fonts
вsrc
. - Загрузите необходимые шрифты в папку
src\fonts
. В этом примере мы загрузили шрифтDancing Script
.

- Затем импортируйте шрифты в файл
index.js
// index.js import './fonts/DancingScript/DancingScript-Bold.ttf';
- В
index.css
добавьте
@font-face { font-family: 'DancingScript'; src: local('DancingScript'), url('./fonts/DancingScript/DancingScript-Bold.ttf') format('truetype'); font-weight: bold; }
- Теперь добавьте в файл
index.css
имя класса, в котором используется этот font family.
.font-dancing-script { font-family: "DancingScript"; }
- Используйте это имя класса в своем React компоненте.
// App.jsx import './App.css'; function App() { return ( <div className="font-dancing-script"> <p>Hello</p> </div> ); } export default App;