react-routerでログイン後の自動リダイレクトを行う。
Facebookログインをreact/react-router/fluxアプリケーションに組み込みたいと思いました。
私はログインイベントにリスナーを登録しており、ユーザーがログインしている場合、'/dashboard'
にリダイレクトしたいと思います。どうすればいいでしょうか?location.push`は、ページを完全に再読み込みした後を除いて、あまりうまく機能しませんでした。
48
7
リアクト・ルーターv3**」のご紹介です。
私はこうしています。
これで、React Router v4 で `` コンポーネントを使用できるようになりました。
Redirect>`をレンダリングすると、新しい場所にナビゲートします。新しい場所は、サーバーサイドのリダイレクトのように、履歴スタックで現在の場所を上書きします。
ドキュメント
Router
インスタンスRouter.create
から返される は受け渡し可能で(React コンポーネント内であれば コンテキストオブジェクト から取得可能)、新しいルートに移行するために使用できるtransitionTo
](https://github.com/rackt/react-router/blob/master/docs/api/RouterContext.md#transitiontoroutenameorpath-params-query) といったメソッドを含んでいます。質問はすでに回答されていますが、ここで与えられた解決策のいずれにも含まれていなかったため、私のために機能した解決策を投稿することは重要だと思います。
まず、「LoginForm」コンポーネントでルーターコンテキストを使用しています。
その後、「LoginForm」コンポーネント内の「ルーター」オブジェクトにアクセスできます。
PS:React-routerバージョン2.6.0に取り組んでいます。
コンポーネントの外に移動します。 --------------------------------。
このようなルーターでアプリを作成します。
ReduxミドルウェアやFluxアクションのような場所:
react-router / tree / v3 / docs。
React-16.2.0 を使用しています& React-router-4.2.0 。
そして、私はこのコードによって解決策を得ます。
this.props.history.push( "/");
。私の作業コード:。
。 .then(response => response.json())。 .then(データ=> {。 if(data.status == 200){。 this.props.history.push( "/");。 consolor.log( 'Successful Login');。 }。 })。
。私はこの文書redirect-on-login-and-logoutをフォローしていました。
また、「return< Redirect to = '/' />」を試してみましたが、運が悪いので、これはうまくいきませんでした。
内部コンポーネントのナビゲート。
コンポーネント内でリダイレクトする必要がある場合は、「withRouter」デコレータを使用する必要があります。 デコレーターはあなたの代わりにコンテキストを使用します。
あなたのお店では:
とルーターが持っています:
ルート名="user" ハンドラ={User}"`。
ユーザーはルートハンドラーです