我有一个应用,当用户到达基本网址时,会将用户重定向到/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
答案 0 :(得分:1)
我认为它不起作用,因为Redirect
属性不正确。 Redirect
是一个组件,而不是属性(https://github.com/reactjs/react-router/blob/master/docs/API.md#redirect)。
更好的想法是使用onEnter
挂钩,您可以在此处查看文档:
基本上你会说&#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
会为您处理。
希望它有所帮助!