Вам также необходимо обновить объект истории.
То, что вы делаете, - это изменение доступного вам объекта истории и вычисление результатов на основе этого объекта. Но когда вы обновите страницу, она все равно будет содержать оригинальный объект истории.
Один из способов сделать это, вам нужно нажать или заменить новый маршрут в истории.
Поскольку поисковая страница evert является новой страницей, поэтому, если вы хотите, чтобы предыдущие страницы сохранялись, вам следует использовать history.push, иначе history.replace
Реализуйте это так:
var routeObj = {
pathname: samePath,
state: sameState,
query: newQuery
}
//push it in your history using which ever routing library you are using.
//For Example:
router.history.replace(routeObj);
Примечание: не беспокойтесь о скорости рендеринга при изменении истории. Реакт достаточно умен, чтобы справиться с этим. По сути, всякий раз, когда вы проталкиваете маршрут, компонент которого уже смонтирован, он не будет размонтироваться и снова перемонтировать тот же компонент, скорее он просто изменит реквизиты и выполнит его рендеринг.
Обратным вызовом для этого случая будет => componentWillReceiveProps