我有一个设置页面,其中包含一些子路线:
--/home
--/articles
--/settings
--/Account(default)
--/Help
--/About
我想要这样一种方式:当我进入设置下的任何子页面,并且浏览器返回历史记录时,它应该始终转到(默认)“帐户”页面。再次返回将遵循正常的浏览器历史记录行为。
处理它的最好方法是什么?
答案 0 :(得分:0)
您可以使用history:
import createHistory from "history/createBrowserHistory"
const history = createHistory()
history.push("/account")
<Router history={history}/>
答案 1 :(得分:0)
经过大量研究,似乎没有简单的方法可以做到,react-router github中的讨论不会不同意。 workaround似乎是共识。按我的喜好这有点原始,但是任何有效的方法都很好。
因此,不是让每个子页面都在设置下使用自己的路由(由react-router处理),而是让它们在settings组件中由状态控制。并使用以下事件处理:
componentDidMount = () => {
window.onpopstate= () => {
if(this.state.currentSubPage !== 'account-settings') {
this.props.history.push('/settings');
} else {
window.onpopstate = null;
}
};
}