React Router:返回特定页面

时间:2018-08-23 10:13:21

标签: reactjs react-router

我有一个设置页面,其中包含一些子路线:

--/home
--/articles
--/settings
  --/Account(default)
  --/Help
  --/About

我想要这样一种方式:当我进入设置下的任何子页面,并且浏览器返回历史记录时,它应该始终转到(默认)“帐户”页面。再次返回将遵循正常的浏览器历史记录行为。

处理它的最好方法是什么?

2 个答案:

答案 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;
    }
  };
}