React-Router |如何一起使用IndexRoute和Redirect?版本:1.0.0-rc1

时间:2015-09-28 01:50:13

标签: reactjs react-router

如上所述,我如何一起使用它们?

像这样:

<Router history={history}>
  <Route path="/" component={Root}>
    <Route path='home' component={HomeContainer}></Route>
    <Route path='about' component={AboutContainer}></Route>

    <IndexRoute component={HomeContainer}/>
  </Route>
</Router>

如果我需要提供&#39; /&#39;的IndexRoute怎么办?重定向到&#39; / home&#39;?

我在react-router 1.0.0-rc1的文件中找不到任何线索。

感谢。

[编辑]

只是详细说明:

在上述配置中,当&#39; /&#39;访问,页面将使用HomeContainer呈现;显示的内容与&#39; / home&#39;完全相同。被访问。

区别在于浏览器地址栏中的URL:在前一种情况下,URL是&#34; /&#34;在后一种情况下,URL是&#34; / home&#34;

我希望网址相同。所以我想要&#34; /&#34; (IndexRoute)直接重定向到&#34; / home&#34;。

希望这能澄清我的需要。

PS: 我可以使用仅执行重定向的Dummy组件来实现此行为:

<Router history={history}>
  <Route path="/" component={Root}>
    <Route path='home' component={HomeContainer}></Route>
    <Route path='about' component={AboutContainer}></Route>

    <IndexRoute component={DummyComponent}/>  // which only does redirect
  </Route>
</Router>

并在DummyComponent中:

componentDidMount() {
  this.history.pushState(null, `/home`, null);
},

但似乎有点变通。

1 个答案:

答案 0 :(得分:0)

对我来说,最好的解决方案是使用onEnter功能。 (不确定这在1.x上有多好,因为我在2.0上使用它。)

<IndexRoute onEnter={(targetState, replace) => {replace('/home')}} />