私は自分自身を教えてきましたreact-router
、そして今、別のページに行くためにどの方法を使うべきか疑問に思っています。window.location.hrefとhistory.pushState - どちらを使用しますか?
this post (Programmatically navigate using react router)によれば、this.props.history.push('/some/path')
で別のページに行くことができます。
しかし、私はwindow.location.href
とhistory.pushState
の違いについては正直にはわかりません。
私が理解している限り、window.location.href = "/blah/blah";
はブラウザを更新する新しいHTTPコールを作成することで他のページに誘導します。
一方、history.pushState
(およびthis.props.history.push('/some/path')
)は、をプッシュするとになります。これにより、HTTPリファラーが変更され、結果的に更新XMLHttpRequest
が更新されます。ここで
はhistory.pushStateを(使用mozila's documentation...
からの抜粋です)あなたが状態を変更した後に作成したのXMLHttpRequestオブジェクトのHTTPヘッダーで使用されますリファラを変更します。
私には、両方のメソッドが新しいHTTP呼び出しを行うように思えます。もしそうなら、違いは何ですか?
アドバイスをいただければ幸いです。
PS
私は、開発者が、それは別のページに移動する方法を決定する前に、サーバーからデータを取得する必要がありますかどうかを検討する必要があるだろうと思いました。
サーバからデータを取得する必要がある場合は、新しいHTTPコールを作成するので、window.location.href
は となります。しかし、<HashRouter>
を使用している場合、または速度を上げるためにページをリフレッシュしたくない場合は、どのような方法が良いでしょうか?
この質問は私にこの記事を作成させました。
ありがとうございます。しかし、私はまだ、 "history.pushState()がHTTPヘッダーで使用されるリファラーを変更する"というMozilaのドキュメントについて100%確信していません。 HTTPヘッダーのリファラーを変更すると、新しいHTTP呼び出しを行うこととは関係がないと仮定するとよいでしょうか? – Hiroki