我正在尝试使用react-router
实现简单身份验证。我认为替换和回调存在问题。请考虑以下代码:
1)路由配置
function getRoutes() {
return {
path: "/",
indexRoute: require("./Home"),
component: require("./Shared/Layout"),
onEnter: handleEnter,
childRoutes: [
require("./Login"),
require("./Secured"),
require("./Any")
]
}
}
function handleEnter(nextState, replace, callback) {
let state = store.getState()
if (!state.hasIn(["shared", "user"])) {
store.dispatch(fetchUser())
.then(callback)
}
}
2)./Secured
路线配置
export = {
path: "/secured",
component: require("./Secured"),
onEnter(nextState, replace) {
let state = store.getState()
if (!state.getIn(["shared", "user"])) {
replace("/login")
}
}
}
它应该像这样工作:
/secured
并检查用户在输入路线时是否经过身份验证/login
问题是不会呈现/login
页面。 URL更改为/login
,但未显示任何内容,并且控制台中没有错误消息。当我从根路由配置中删除callback
参数时,它会按预期开始工作。
我做错了吗?
答案 0 :(得分:0)
嗯,这真的很愚蠢:)当用户已经过身份验证时,我忘了给callback
打电话。