Как работать с параметрами запроса в реагировать + реагировать-маршрутизатор + поток
Я пытаюсь заменить приложение Backbone.Marionette на React, и мне трудно думать о параметрах запроса. Я думаю, что мне не хватает по-настоящему простого покоя в понимании этой схемы, поэтому я прошу прощения, если этот вопрос совершенно бессмысленный. Я был бы признателен за любую поддержку или просто указать мне направление, в котором я могу найти Google более конкретно.
Есть/users
страница, на которой перечислены пользователи, и вы можете фильтровать пользователей через панель поиска. Поэтому, если вы хотите отфильтровать пользователей, в имени которых содержится «joe», я бы сделал запрос к серверу с такими параметрами запроса, как/users?username=joe
, Кроме того, я могу разбить на страницы, добавивpage
параметр тоже (/users?username=joe&page=1
).
Если бы я думал только о функциональности, поток, вероятно, был бы
Клиент вставляетjoe
на элемент ввода и кликиПоиск.Нажав наПоиск кнопка запускаетAction
(как Action.getUser).Action
делает запрос к серверу и получает результатыDispatcher
отправляет функцию с полезной нагрузкой результатов кому угодно (обычноStore
) заинтересован вAction
.Store
состояние меняется с новым результатом, полученнымAction
Вид (Component
) перерисовывает, слушаяStore
Смена.и работает как положено. Однако я хотел бы, чтобы Клиент мог добавить в закладки текущий отфильтрованный результат и вернуться на ту же страницу через некоторое время. Это означает, что мне понадобится где-то сохранить явную информацию о поисковом запросе, сделанном Клиентом, который обычно является URL-адресом (я прав?). Поэтому мне нужно обновить URL с параметрами запроса, чтобы сохранить условие поиска (/users?username=joe&page=1
).
Что меня смущает, так это где и когда обновлять URL? То, что я могу придумать прямо сейчас, это 2 варианта ниже - и они, кажется, не совсем чистые.
Опция 1Клиент вставляетjoe
на элемент ввода и кликиПоиск.Нажав наПоиск кнопка запускает переход ReactRouter с новыми параметрами запроса (/users?username=joe&page=1
).Вид (Component
) получает новые параметры черезthis.props.params
а такжеthis.props.query
.Вид (Component
) разжигаетAction
лайкAction.getUser
в зависимости от параметров запроса, которые он получает - в этом случаеusername=joe&page=1
.после этого то же самое, что и выше
Вариант 2 (только 6 отличается от того, что я объяснил выше)Клиент вставляетjoe
на элемент ввода и кликиПоиск.Нажав наПоиск кнопка запускаетAction
(как Action.getUser).Action
делает запрос к серверу и получает результатыDispatcher
отправляет функцию с полезной нагрузкой результатов кому угодно (обычноStore
) заинтересован вAction
.Store
состояние меняется с новым результатом, полученнымAction
Вид (Component
) перерисовывает, слушаяStore
Смена.И как-то (пока не знаю как) обновляет свой URL в зависимости от егоprops
(лайкthis.props.searchusername
, а такжеthis.props.searchpage
)Какова лучшая практика обработки параметров запроса? (или это может не относиться к параметрам запроса) Я полностью не понимаю шаблон проектирования или архитектуру? Заранее спасибо за любую поддержку.
Некоторые статьи, которые я прочитал
Любой способ получить текущие параметры или текущий запрос от маршрутизатора (за пределами компонента)?Асинхронные данные и хранилища FluxУпростите добавление параметров запросаПараметры React Router и Произвольного запроса: страница непреднамеренно обновляется при загрузке?Добавить параметры по умолчанию?