ConnectedRouter — программная отправка маршрута с возможностью возврата в браузере

Я использую ConnectedRouter из react-router-redux (5.0.0-alpha.6). Вот пример кода

import {Route, Switch} from 'react-router';
import {ConnectedRouter} from 'react-router-redux';

ReactDOM.render(
    <Provider store={app.store}>
        <ConnectedRouter history={app.history}>
            <div>
                <Switch>
                    <Route exact path="/about" component={About} />
                    <Route exact path="/:animalName?" component={Animalpage} />
                </Switch>
            </div>
        </ConnectedRouter>
    </Provider>, document.getElementById('root')
);

У меня есть требование, согласно которому, если я приземляюсь на «/», тогда он должен направлять животное по умолчанию (скажем, кошку).

Я достигаю этого, используя push от react-router-redux

dispatch(push("/Cat"));

Теперь проблема в том, что когда я нажимаю кнопку «Назад» в браузере, она возвращает меня к «/», что снова возвращает меня к «/ Cat», и поэтому я не могу использовать кнопку «Назад» из браузера.

Есть ли способ выполнить мое требование перейти на маршрут по умолчанию и заставить работать кнопку «Назад» в браузере?


person learner    schedule 20.09.2017    source источник


Ответы (1)


Вы должны использовать действие replace(), а не push(). Подробную информацию можно найти здесь

Создатели действий, соответствующие методам истории с тем же именем.
Для справки они определены следующим образом:

  • push — добавляет новое местоположение в историю, становясь текущим местоположением.
  • replace — заменяет текущее местоположение в истории.
  • go — перемещается назад или вперед на относительное количество местоположений в истории.
  • goForward — переход на одно место вперед. Эквивалент идти(1)
  • goBack — переход на одно место назад. Эквивалент идти (-1)
person bennygenel    schedule 20.09.2017