Record (Запросы API) / Пагинация
В Nuxoblivius предусмотрена встроенная поддержка пагинации, что упрощает работу с постраничной загрузкой данных.
Важно!
Прежде чем приступать к настройке, рекомендуется ознакомиться с разделом про трансформацию ответа (template), так как именно она лежит в основе обработки данных для пагинации.
Настройка пагинации в Record
По умолчанию пагинация в Record отключена. Чтобы её активировать, необходимо явно указать, где именно должен передаваться номер страницы — в query-параметре или в path-параметре.
Для этого используется первый аргумент метода:
path:<name>— если требуется использовать как path-параметрquery:<name>— если требуется использовать как query-параметр
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts/{page}", []);
posts.pagination.setup("path:page");
/* Output: /api/posts/1 */import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
posts.pagination.setup("query:page");
/* Output: /api/posts?page=1 */Важно!
Для корректной работы пагинации необходимо настроить метод .template(). Именно он сообщает Record, сколько всего страниц доступно, чтобы можно было переключаться между ними.
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
posts.template((rawData) => ({
data: rawData.items,
pageCount: rawData.meta.pageCount,
})); Автоматический перезапуск запроса
При изменении параметров пагинации можно настроить автоматический повтор последнего запроса. Для этого в Record используется метод .autoReload(), который автоматически обновляет данные при переключении страниц.
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
posts.pagination.autoReload();Информация о пагинации в Record
Для работы с пагинацией Record предоставляет ряд реактивных свойств, которые позволяют отслеживать текущее состояние:
current— номер текущей страницы.lastPage— номер последней доступной страницы.isLastPage— булево значение, указывающее, является ли текущая страница последней.
Эти свойства можно использовать, например, для отображения кнопок перехода или блокировки загрузки следующей страницы.
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
console.log(
posts.pagination.current, // 1
posts.pagination.lastPage, // 10
posts.pagination.isLastPage, // false
);Управление страницей
Для удобного управления пагинацией в Record доступны как свойства, так и методы.
Изменение текущей страницы — current
Вы можете напрямую изменять свойство current, чтобы задать номер текущей страницы.
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
posts.pagination.current = 3; // Перейти на 3 страницуМетоды next() и prev()
Позволяют перемещаться на следующую или предыдущую страницу.
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
posts.pagination.next(); // Следующая страница
posts.pagination.prev(); // Предыдущая страницаМетоды toFirst() и toLast()
Обеспечивают быстрый переход на первую или последнюю страницу.
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
posts.pagination.toFirst(); // Перейти на первую страницу
posts.pagination.toLast(); // Перейти на последнюю страницуДинамическое включение и выключение пагинации
Пагинацию можно гибко контролировать — при необходимости её включать или отключать. Для этого у Record предусмотрено реактивное свойство enabled.
import { Record } from "nuxoblivius";
const posts = Record.new<Post>("/api/posts", []);
posts.pagination.enabled = true;