2017-11-16 21 views
1

ログインに成功した後、ホームページにリダイレクトしたい。これまでに検索しましたが、解決策が見つかりませんでした。事前のおかげで他のページへリダイレクトすると反応しない

//imported react-router 
import { Redirect } from 'react-router'; 

//main route file 
<Router> 
    <div> 
    <Route exact path = "/" component={ App } /> 
    <Route path = "/home" component={ Homepage } /> 
    </div> 
</Router> 

//redirect after ajax success 
$.ajax({ 
    type: 'POST', 
    url: '/login_participant', 
    data: data, 
    dataType:'json', 
    success:function(data) { 
     console.log(data); 

     //redirecting home after login successfully 
     <Redirect to ="/home" /> 
    }, 
    error:function(err) { 
     console.log(err); 
    } 
}) 
+0

あなたは間違ってリダイレクトを使用しています。そのjsxタグ。レンダリング機能が必要です。また、jquery ajaxの使用をやめて反応してください。その悪い習慣。あなたのajax呼び出しにaxiosまたはfetch関数を使用してください。リダイレクトjsxタグを使用する方法です。 https://stackoverflow.com/questions/43230194/how-to-use-redirect-in-the-new-react-router-dom-of-reactjs –

答えて

0

<Redirect />は、いくつかの小道具を取り、それと何かをシンプルな構成要素です。それは反応ルータによって提供される他のコンポーネントと契約しているので、コンテキストが何であるかを知る必要があります。

ログインに成功した後にリダイレクトする場合は、react-router-reduxpushアクション)を使用するか、コンポーネントにデータを提供するように状態フラグisUserLoggedInまたはsthを保持する必要があります。どちらの解決策も、還元/フラックスまたは他の状態容器を使用する必要があります。

redux/fluxを使用したくない場合は、ウィンドウの場所を置き換えてください。 (パス名)。

これは私の側からのものです。おそらく他の人たちがより良い解決策を持っているかもしれません。

+0

私は新しい反応です。これにperpectの解決策を提供してください –

+0

あなたが現在reduxを使用していないなら、それはあなたのプロジェクトの大きな変化です。私はいくつかの解決法を提供することができますが、これをもう少し広く見なければなりません。あなたはあなたのプロジェクトのいくつかのサンプルを提供することができますか?これをしたくない場合は、私が言及した標準のjavascript APIを使用して、ユーザーをリダイレクトしてウィンドウの場所を置き換えることをお勧めします。変更するには1行で、大きな変更はありません。 ''を 'window.location = 'your_successful_login_location'に置き換えるか、同じ起点であれば' window.location.pathname =' your_pathaneme '; ' –

+0

window.locationが動作しません –

関連する問題