ConnectedRouter - 使用浏览器后退功能以编程方式推送路由

时间:2017-09-20 09:46:08

标签: reactjs redux react-router react-router-v4 react-router-redux

我正在使用来自react-router-redux(5.0.0-alpha.6)的ConnectedRouter。这是示例代码

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')
);

我有一个要求,如果我登陆“/”那么它应该路由到默认动物(比如Cat)。

我使用来自react-router-redux

的推送来实现这一目标
dispatch(push("/Cat"));

现在的问题是,当我按下浏览器后退按钮时,它会将我带到“/”,这会再次将我带回“/ Cat”,因此我无法使用浏览器中的后退按钮。

有没有办法实现我的默认路由要求并且浏览器后退按钮有效?

1 个答案:

答案 0 :(得分:2)

您应该使用replace()操作而不是push()。可以找到详细信息here

  

history methods of the same name对应的动作创作者   作为参考,它们的定义如下:

     
      
  • 推送 - 将新位置推送到历史记录,成为当前位置。
  •   
  • 替换 - 替换历史记录中的当前位置。
  •   
  • go - 向后或向前移动历史记录中的相对位置数。
  •   
  • goForward - 向前移动一个位置。相当于go(1)
  •   
  • goBack - 向后移动一个位置。相当于go(-1)
  •