react-router重定向设置失效的问题?

项目中按照以下路由设置,但是重定向无效,是何原因?

router.js

const routes = [
    {
        path: '/',
        onEnter: requireAuth,
        component: require('./components/MainLayout/Layout').default,
        indexRoute: { component: require('./routes/PublicLibrary/components/PublicLibrary')},
        childRoutes: [
            require('./routes/PublicLibrary'),//公共库
            require('./routes/WorkTable'),//工作台
        ],
    },
    require('./routes/EditProject'),//工作台-编辑
    require('./routes/Login')//登录
];
const App = () => (
    <Provider {...stores}>
        <Router history={hashHistory} routes={routes}>
            <Redirect from="/" to="/publiclibrary"/>
        </Router>
    </Provider>
);
export default hot(module)(App);

地址栏中输入项目地址:localhost:8585,并未重定向至localhost:8585/#/publiclibrary

阅读 3.9k
2 个回答

在Redirect中加上exact

<Redirect from="/" exact to="/publiclibrary"/>

当前的解决办法:

在项目Layout组件将要挂载的时候,监听props的children是否存在,不存在则设定默认路由。

componentWillMount() {
   if(!this.props.children)
      hashHistory.push('/publiclibrary')
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题