「/ project」を押すと、ユーザーをデフォルト(最初の)プロジェクトにリダイレクトする onEnter パラメーターを含むルートがあります。
<Route path="project" onEnter={redirectToDefaultProject}/>
そして、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
と同じです。
そしてプッシュは次のようなものです:
router.push({
pathname: '/users/12',
query: { modal: true },
state: { fromDashboard: true }
})
/users/12/ を処理するコンポーネントは、this.state または this.props.route.state を介して「fromDashboard」を取得できると思いますか? 置換で機能しないのはなぜですか?