2016-10-20 9 views
0

私はvanillaを反応ルータと反応させて、単純なマスターディテールSPAを構築しています。 リストページでは、push(*route*)を使用してユーザーを詳細ビューに移動し、詳細ビューの戻るボタンを押してgoBack()を呼び出し、ユーザーをリストビューに移動します。反応ルータからgoove()を避ける

push('/list')の代わりにgoBack()関数を使用する理由は、ユーザーがフィルタ/ページ設定パラメータ(例:/ list/1/10?q = abc)を失うことなくリストビューに戻ることができるようにするためです。

私が抱える問題は、ユーザーがブラウザをブラウザから起動した場合です。 Googleは、アドレスバーに詳細ビューのURLをコピー/貼り付け、goBack()機能は、Googleが彼の最後の歴史だったので、それらをGoogleに戻します。

goBack()の宛先を確認し、ユーザーがアプリケーションを終了するかどうかに基づいてgoBack()を実行する方法がありますか?

答えて

0

ルーターを使用して、リストページのクエリーパラメーターを状態として宛先ページにプッシュすることができます。詳細ページがリストページからナビゲートされている場合にのみ使用できます。

状態は、現在のアプリケーションスコープ内でのみ維持されます。 URLを別のブラウザタブにコピーすると、この状態は失われます。

例:詳細ページへ 一覧ページナビゲーション

router.push({ 
    pathname: '/users/12', 
    query: { modal: true }, 
    state: { fromDashboard: true } 
}) 

詳細ページ:

if (this.props.location.state && this.props.location.state.params) { 
    navigateBackUsingParams(this.props.location.state.params); 
} else { 
    navigateBackWithHardcodedUrl(); 
} 
関連する問題