Автор оригинала: Mason Hargrove.
Для этого поста я собираюсь объяснить, как создать простую систему пагинации, используя Семантический интерфейс Библиотека с Реагировать Отказ
Я собираюсь использовать Свапи API, чтобы иметь данные для ссылки в моем примере.
Я также собираюсь использовать Axios Библиотека на основе по обещанию, чтобы дать вам представление о том, как получить данные в Интернете и связывать его в компонент Pagination, предоставляемый семантическим интерфейсом UI.
Чтобы начать убедиться, что вы установили семантический интерфейс в ваше приложение React. Инструкции о том, как сделать это можно найти здесь Отказ
После того, как вы установите его, и ссылка CSS внутри вашего index.html теперь вы можете импортировать множество различных компонентов, предлагаемых вам, но для этого примера мы будем использовать только Пагинация составная часть.
import React from 'react';
import { Pagination } from 'semantic-ui-react';
const App = () => {
return (
);
};
export default App;
Итак, теперь мы готовы использовать компонент Pagination, но что мы с этим делаем и как мы можем заставить его работать должным образом? Компонент Pagination, как и все компоненты, имеют атрибуты, которые вы можете установить для управления своими компонентами. Вы можете увидеть все из них в документации, но нам нужно только использовать несколько из них, чтобы его работали.
Следующий шаг, который я собираюсь сделать, это извлекать некоторые данные с моей API и отобразить его в моем приложении. Вот пост в блоге на Useffect и документация на Уместите Если вам нужно больше.
import React, { useState, useEffect } from 'react';
import { Pagination } from 'semantic-ui-react';
import axios from 'axios';
const App = () => {
const [data, setData] = useState([]);
const [apiUrl, setApiUrl] = useState('https://swapi.co/api/people/');
useEffect(() => {
axios.get(apiUrl).then(response => {
setData(response.data.results);
});
}, [apiUrl]);
return (
);
};
export default App;
Чтобы правильно начать пагинацию, нам нужно начать использовать некоторые из параметров атрибута на нашем компоненте Pagination.
import React, { useState, useEffect } from 'react';
import { Pagination } from 'semantic-ui-react';
import axios from 'axios';
const App = () => {
const [data, setData] = useState([]);
const [activePage, setActivePage] = useState(1);
const [apiUrl, setApiUrl] = useState('https://swapi.co/api/people/');
useEffect(() => {
axios.get(apiUrl).then(response => {
setData(response.data.results);
});
}, [apiUrl]);
const onChange = (e, pageInfo) => {
setActivePage(pageInfo.activePage);
setApiUrl('https://swapi.co/api/people/?page=' + page.activePage.toString());
};
return (
);
};
export default App;
Первое, что я сделал, был установлен атрибут ActivePage, равный переменной ActivePage, которую я устанавливаю в моем состоянии.
Второй атрибут, OnPageChange, запустит данную функцию, когда компонент обнаруживает новое число страницы. Его первый параметр будет объект события, а второй – это объект, передаваемый в компоненте. Имущество, которое мы хотим использовать, – это свойство ActivePage.
После того, как я установил активную страницу, я тогда обновит свой URL-адрес API. Моя функция EmoSeffect наблюдает за тем, есть ли какие-либо изменения, сделанные в переменной APIURL, если она повторно запускает функцию, указанную, в этом случае она сделает новый HTTP-запрос для дополнительных данных из API.
Если вам нужна дополнительная информация, работающая с семантическим интерфейсом UI или отреагирует, не стесняйтесь комментировать ниже или забронировать сеанс.