首页 > 解决方案 > 反应路由器onEnter替换不起作用

问题描述

我想使用 react-router(v3.0.2) onEnter 进行身份验证,replace 方法在首次访问时不起作用,但会引发错误。我能怎么做 ?

着陆页可能受到保护。(登录验证)

export default {
    path: '/',
    component: LandingContainer,
    onEnter: (router, replace) => {
        const { store, actions } = context
        const { getState, dispatch } = store
        const state = getState()
        const user = state.get('user')
        if (!user.get('_id')) {
            dispatch(actions.setReturnUrl(location.pathname + 
location.search))
            replace('/login')
            return
        }
        return
    },
    childRoutes: [
        require('./user').default || require('./user'),
        require('./live').default || require('./live'),
        require('./course').default || require('./course')
    ],
    indexRoute: {
        component: Main
    }
}

替换不起作用,但发生错误(仅第一次渲染)

warning.js?8a56:33 Warning: Failed prop type: The prop `routes` is marked as required in `Root`, but its value is `undefined`.
in Root

warning.js?8a56:33 Warning: Failed child context type: The child context `routes` is marked as required in `Root`, but its value is `undefined`.
in Root
in AppContainer

Warning: [react-router] Location "/" did not match any routes

标签: reactjsreplacereact-router

解决方案


推荐阅读