使用反应路由器重定向

时间:2016-07-04 15:21:01

标签: reactjs react-router

我有以下路线配置:

const route = {
    path: 'services',

    getComponent(nextState, callback) {
        require.ensure([], (require) => {
            callback(null, require('./components/services').default)
        })
    },
    //getIndexRoute(partialNextState, callback) {
    //    require.ensure([], (require) => {
    //        callback(null, {component: require('./components/consulting').default})
    //    })
    //},
    childRoutes: [
        {
            path: 'consulting',
            getComponent(nextState, callback) {
                require.ensure([], (require) => {
                    callback(null, require('./components/consulting').default)
                })
            }
        }
    ],
    indexRedirect: {
        //from: 'services',
        to: 'consulting'
    }
}

export default route

但是当我去/services时,我收到错误:

  

TypeError:element为null

当我使用getIndexRoute时,它工作正常,但现在我希望重定向到/services/consulting。这个错误是什么,考虑到我知道它不是组件?

1 个答案:

答案 0 :(得分:1)

IndexRedirect在对象表示法中不可用,就像 jsx 组件一样。如果您想重现它的行为,您应该使用onEnter挂钩进行重定向。更多细节描述here

所以,你应该改变:

indexRedirect: {
    //from: 'services',
    to: 'consulting'
}

到:

indexRoute: { 
    onEnter: (nextState, replace) => replace('/consulting') 
}