Автор оригинала: 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 или отреагирует, не стесняйтесь комментировать ниже или забронировать сеанс.