React-Router和重定向没有任何想法?

时间:2016-06-30 20:02:30

标签: react-router

我有一个应用,当用户到达基本网址时,会将用户重定向到/products网址。

我正在使用react-router的新语法:

const baseroute = () => {
    return {
        path: '/',
        Redirect:'/products',
        childRoutes: [
            {
                path: '*',
                Redirect: '/product'
            }
        ]
    }
}

这是我的routes

<Router history={browserHistory}>
    { products() }
    { about() }
    { baseroute() }
</Router>

一切都很好,除了重定向不起作用。

如果用户来这里:

www.mydomain.com/about <--- great!
www.mydomain.com  ---> SHOULD redirect to
-----> www.mydomain.com/products

或者因为没有合适的子根:

www.mydomain.com/whatever
-------> www.mydomain.com/products

1 个答案:

答案 0 :(得分:1)

我认为它不起作用,因为Redirect属性不正确。 Redirect是一个组件,而不是属性(https://github.com/reactjs/react-router/blob/master/docs/API.md#redirect)。

更好的想法是使用onEnter挂钩,您可以在此处查看文档:

https://github.com/reactjs/react-router/blob/master/docs/guides/RouteConfiguration.md#enter-and-leave-hooks

基本上你会说&#34;当进入这条路线时,做那个&#34;:

{
    path: '/my-path',
    onEnter: (nextState, replace) => {
        replace('/replaced-path');
    }
}

请注意,replace是由react-router提供的功能,因此,它会在您的路径上执行replace。如果您需要访问其他网址,或强制某种“刷新/重定向”,您可以在location.href = "http://something"内使用onEnter之类的内容。

有关onEnter hook的更多信息:

https://github.com/reactjs/react-router/blob/master/docs/Glossary.md#enterhook

此外,我不认为您提供的childRoutes是必需的,因为在父路线上使用onEnter会为您处理。

希望它有所帮助!