我正在使用来自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”,因此我无法使用浏览器中的后退按钮。
有没有办法实现我的默认路由要求并且浏览器后退按钮有效?
答案 0 :(得分:2)
您应该使用replace()
操作而不是push()
。可以找到详细信息here
与history methods of the same name对应的动作创作者 作为参考,它们的定义如下:
- 推送 - 将新位置推送到历史记录,成为当前位置。
- 替换 - 替换历史记录中的当前位置。
- go - 向后或向前移动历史记录中的相对位置数。
- goForward - 向前移动一个位置。相当于go(1)
- goBack - 向后移动一个位置。相当于go(-1)