2

我有一个带有 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”?为什么它不适用于替换?

4

0 回答 0