我有一个带有 onEnter 参数的路由,当他们点击“/project”时,它将用户重定向到默认(第一个)项目:
<Route path="project" onEnter={redirectToDefaultProject}/>
并重定向到默认项目:
const redirectToDefaultProject = (nextState, replace, callback) => {
$.get('/api/projects')
.then((response) => {
if (projects.length) {
replace({
pathname: '/projects/' + projects[0].id,
state: { nextPathname: nextState.location.pathname,
projects: projects } // I can't get 'projects' in the Project component
});
callback();
}
// else ...
}
}
我需要 Project 组件中的项目,以便列出它们。现在我根本无法访问项目,它只是没有附加到组件上。
API有点模糊:
replace(pathOrLoc)
与push相同,只是用新的历史条目替换当前历史条目。
push就像:
router.push({
pathname: '/users/12',
query: { modal: true },
state: { fromDashboard: true }
})
我假设处理 /users/12/ 的组件可以通过 this.state 或 this.props.route.state 获取“fromDashboard”?为什么它不适用于替换?