Подробное руководство по извлечению и отправке данных в React.js с помощью стилей Axios и Tailwind CSS
Подробное руководство по извлечению, получению, отправке и изменению данных в React.js с помощью стилей Axios и Tailwind CSS
В веб-разработке выборка, получение, отправка и изменение данных являются общими задачами, необходимыми для создания интерактивных и динамических веб-приложений. Одной из популярных библиотек для выполнения HTTP-запросов в JavaScript является Axios, которую можно использовать в сочетании с Promise и Try-Catch для обработки асинхронных операций и ошибок более удобным для чтения и сопровождения способом. В этом сообщении блога мы рассмотрим, как использовать Axios, Promise и Try-Catch в React.js для извлечения, получения, отправки и изменения данных из API JSONPlaceholder, а также добавить некоторые стили CSS к нашим компонентам с помощью Tailwind CSS.
1. Настройте проект и установите зависимости.
Для начала нам нужно создать новый проект React.js с помощью Create React App, инструмента с интерфейсом командной строки, который настраивает новый проект с базовой структурой папок и файлами конфигурации. Откройте терминал или командную строку и выполните следующие команды:
npx create-react-app axios-tutorial cd axios-tutorial
После создания проекта мы можем установить необходимые зависимости, выполнив следующую команду:
npm install axios tailwindcss
Axios — это облегченная клиентская библиотека HTTP, которая поддерживает все современные браузеры и предоставляет простой API для выполнения HTTP-запросов. Tailwind CSS — это ориентированная на утилиты среда CSS, которая позволяет нам быстро и эффективно стилизовать наши компоненты, применяя предварительно определенные классы.
2. Создайте новый компонент для получения данных
В этом руководстве мы создадим новый компонент с именем FetchData
, который извлекает данные из API JSONPlaceholder и отображает их в таблице. Чтобы создать компонент, откройте папку src
и создайте новый файл с именем FetchData.js
. Затем добавьте следующий код:
import React, { useState, useEffect } from "react"; import axios from "axios"; const FetchData = () => { const [users, setUsers] = useState([]); useEffect(() => { axios .get("https://jsonplaceholder.typicode.com/users") .then((response) => setUsers(response.data)) .catch((error) => console.log(error)); }, []); return ( <div className="container mx-auto mt-4"> <h1 className="text-2xl font-bold mb-4">Fetch Data Example</h1> <table className="table-auto"> <thead> <tr> <th className="px-4 py-2">ID</th> <th className="px-4 py-2">Name</th> <th className="px-4 py-2">Email</th> <th className="px-4 py-2">Website</th> </tr> </thead> <tbody> {users.map((user) => ( <tr key={user.id}> <td className="border px-4 py-2">{user.id}</td> <td className="border px-4 py-2">{user.name}</td> <td className="border px-4 py-2">{user.email}</td> <td className="border px-4 py-2">{user.website}</td> </tr> ))} </tbody> </table> </div> ); }; export default FetchData;
Разберем код:
- Мы импортируем React, useState, useEffect и axios из соответствующих пакетов.
- Мы определяем функциональный компонент с именем
FetchData
, который возвращает некоторый JSX. - Мы используем хук
useState
для создания переменной состояния с именемusers
, которая инициализируется как пустой массив. - Мы используем хук
useEffect
для получения данных из JSONPlaceholder API при монтировании компонента. Мы делаем запрос GET к конечной точке/users
и устанавливаем переменную состоянияusers
в данные ответа с помощью функцииsetUsers
. Мы также отлавливаем любые ошибки, которые могут возникнуть, и записываем их в консоль. - Мы визуализируем контейнер
<div>
с заголовком и элемент<table>
, отображающий данные в табличном формате. Мы сопоставляем массивusers
, используя методmap
, чтобы отображать новую строку таблицы для каждого пользовательского объекта. В каждой строке отображается идентификатор пользователя, имя, адрес электронной почты и веб-сайт.
3. Добавьте компонент в файл App.js.
Чтобы увидеть компонент FetchData
в действии, нам нужно добавить его в файл App.js
. Откройте файл и замените существующий код следующим:
import React from "react"; import FetchData from "./FetchData"; function App() { return ( <div className="container mx-auto mt-4"> <FetchData /> </div> ); } export default App;
Здесь мы импортируем компонент FetchData
из файла FetchData.js
и визуализируем его внутри элемента контейнера <div>
.
4. Запустите приложение и протестируйте компонент
Чтобы протестировать компонент, нам нужно запустить сервер разработки, выполнив следующую команду:
npm start
Это должно открыть новое окно браузера с URL-адресом https://localhost:3000/
и отобразить компонент FetchData
с таблицей пользовательских данных.
5. Создайте новый компонент для отправки и изменения данных
Мы также создадим новый компонент с именем SendData
, который позволит нам отправлять данные в JSONPlaceholder API и изменять существующее имя пользователя. Чтобы создать компонент, откройте папку src
и создайте новый файл с именем SendData.js
. Затем добавьте следующий код:
import React, { useState } from "react"; import axios from "axios"; const SendData = () => { const [name, setName] = useState(""); const [id, setId] = useState(""); const [message, setMessage] = useState(""); const handleSubmit = (e) => { e.preventDefault(); axios .put(`https://jsonplaceholder.typicode.com/users/${id}`, { name }) .then((response) => setMessage(`User ${id} name changed to ${response.data.name}`) ) .catch((error) => setMessage(error.message)); setName(""); setId(""); }; return ( <div className="container mx-auto mt-4"> <h1 className="text-2xl font-bold mb-4">Send Data Example</h1> <form onSubmit={handleSubmit}> <div className="flex flex-col mb-4"> <label htmlFor="name" className="mb-2"> Name </label> <input type="text" id="name" value={name} onChange={(e) => setName(e.target.value)} className="border border-gray-400 py-2 px-3" /> </div> <div className="flex flex-col mb-4"> <label htmlFor="id" className="mb-2"> ID </label> <input type="text" id="id" value={id} onChange={(e) => setId(e.target.value)} className="border border-gray-400 py-2 px-3" /> </div> <button type="submit" className="bg-blue-500 text-white py-2 px-4"> Submit </button> </form> {message && ( <p className="text-green-500 mt-4">{message}</p> )} </div>); }; export default SendData;
В этом компоненте мы используем хук useState
для создания переменных состояния для имени пользователя, идентификатора и сообщения, которое будет отображаться при отправке формы. Мы также создаем функцию handleSubmit
, которая делает запрос PUT к конечной точке /users/:id
для обновления имени пользователя. Мы используем метод axios.put
и передаем идентификатор пользователя и новое имя в качестве данных.
Когда запрос выполнен успешно, мы устанавливаем переменную состояния message
в строку, которая подтверждает изменение имени. Если возникает ошибка, мы устанавливаем переменную состояния message
в сообщение об ошибке.
В операторе return
мы отображаем форму с двумя полями ввода для имени пользователя и идентификатора. Мы также визуализируем кнопку отправки, которая запускает функцию handleSubmit
при нажатии. Наконец, мы визуализируем переменную состояния message
под формой.
6. Добавьте новый компонент в файл App.js.
Чтобы увидеть компонент SendData
в действии, нам нужно добавить его в файл App.js
. Откройте файл и замените существующий код следующим:
import React from "react"; import FetchData from "./FetchData"; import SendData from "./SendData"; function App() { return ( <div className="container mx-auto mt-4"> <FetchData /> <SendData /> </div> ); } export default App;
Здесь мы импортируем компонент SendData
из файла SendData.js
и визуализируем его под компонентом FetchData
внутри элемента-контейнера <div>
.
7. Запустите приложение и протестируйте компоненты
Чтобы протестировать компонент SendData
, введите идентификатор пользователя и новое имя в поля ввода и нажмите кнопку отправки. Если запрос выполнен успешно, вы должны увидеть подтверждающее сообщение под формой.
Заключение
В этом руководстве мы узнали, как использовать Axios, Promises и Try-Catch для извлечения, отправки и изменения данных из API в приложении React.js. Мы также использовали Tailwind CSS для стилизации компонентов и отображения данных в удобном для пользователя формате. Выполнив эти шаги, вы теперь сможете создавать аналогичные компоненты и использовать их для взаимодействия с другими API.