Next.js, фильтры без client state

Next.js, фильтры без client state

Когда фильтры в каталоге живут в client state, почти сразу появляется знакомый набор задач: синхронизировать их с URL, не потерять при reload, поддержать back/forward, не запутаться в useEffect и не разнести логику по нескольким уровням интерфейса.

В App Router эту конструкцию часто можно упростить. Если фильтр описывает состояние страницы, его можно держать в URL. Тогда searchParams становятся входом для серверной страницы, а данные запрашиваются уже от маршрута.

Получается более жёсткая и понятная модель: адрес описывает состояние, сервер читает его и отдаёт UI с нужным результатом. Меньше скрытого client state, меньше дублирования, меньше ручной синхронизации.

Это не универсальное правило для любого флага в интерфейсе. Но для поиска, сортировки, фильтров каталога и пагинации такой подход часто оказывается чище и устойчивее.

Статья на Хабр

Проект: Goods Finder