私は react-router-reduxの例 を読んでいて、混乱しました。違いは何ですか:
import { Redirect } from 'react-router-dom'
...
<Redirect to='/login' />
そして
import { Push } from 'react-router-redux'
...
Push('/login')
リダイレクト
<Redirect>
をレンダリングすると、新しい場所に移動します。新しい場所は、サーバー側のリダイレクト(HTTP 3xx)のようにoverride the current location in the history stack,
なります。
一方、履歴
プッシュ関数Pushes a new entry onto the history stack
<Redirect>
コンポーネントは、デフォルトでは、現在の場所を履歴スタック内の新しい場所に置き換え、基本的にサーバー側のリダイレクトとして機能します。
ただし、プロパティPush
とともに使用することもできます。この場合、history.Push
と同じように機能して、新しいエントリを履歴スタックにプッシュします。
実際、<Redirect>
コンポーネントは、舞台裏でhistory Push
およびreplace
メソッドを使用します。これは単なるReactのナビゲート方法です。
したがって、基本的にナビゲートするには2つの方法があります。
コンポーネントでhistory.Push
とhistory.replace
を使用します(通常はwithRouter
HOCでラップされているため、location
オブジェクトにアクセスしなくてもアクセスできます)親から子。
<Redirect>
コンポーネントは、Push
プロパティの有無に応じて使用します。