Сценарий:
Существует домашняя страница, с которой при поиске пользователь перенаправляется на страницу поиска с параметром запроса (например, q = abc).Теперь, находясь на странице поиска, пользователь снова пытается найти другое значение, поэтому он снова перенаправляется на ту же страницу поиска, но с другим параметром запроса (например, q = xyz)
Проблема:
Когда я снова пытаюсь выполнить перенаправление со страницы поиска на тот же маршрут с другим параметром запроса, я получаю сообщение об ошибке «Вы пытались перенаправить на тот же маршрут, на котором сейчас находитесь».
Ожидаемый результат:
Пользователь должен быть перенаправлен на тот же маршрут еще раз с другими параметрами запроса, чтобы при нажатии кнопки назад он мог вернуться к предыдущему запросу, как этообычно было бы, если бы это не было SPA.Результат должен быть аналогичен случаю, когда я перенаправил пользователя из / search / abc в / search / xyz, используя один и тот же компонент.
Возможное решение:
При отправке поискового запроса я могу проверить, является ли он тем же маршрутом, и на основании этого я могу либо перенаправить, либо обновить состояние компонента каким-либо образом.Проблема этого решения заключается в том, что пользователь не может вернуться к предыдущему запросу, нажав кнопку «Назад» браузера.Я хочу, чтобы страница была добавлена в историю.
Фрагмент кода:
Использование приведенного ниже кода для перенаправления в функции рендеринга внутри компонента поиска, который присутствует как на домашней странице, так и в поискеpage
if (this.state.isReady) {
let queryString = "q=" + this.state.q;
return (
<Redirect push to={`/search/hotels?${queryString}`} />
);
}
Я думаю, что это обычная проблема для любого сайта, имеющего функцию поиска, поэтому должен быть элегантный способ справиться с такой ситуацией, но я не могу думать об этом.