2

「/ 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」を取得できると思いますか? 置換で機能しないのはなぜですか?

4

0 に答える 0