私はreplaceState()&の間の長所/短所を読んで探してきましたpushState()。Mozillaの記事も読んでください。この興味深いテストですが、違いはまだわかりません。
それらが何が違うのか説明したい人はいますか?
回答:
replaceState()ブラウザのURLを変更します(つまり、戻るボタンを押しても元に戻りません)
pushState() URLを変更し、古いURLをブラウザの履歴に保持します(つまり、戻るボタンを押すと元に戻ります)
あなたのリンクから
history.replaceState()は、replaceState()が新しい履歴エントリを作成する代わりに現在の履歴エントリを変更することを除いて、history.pushState()とまったく同じように動作します。
replaceState()は、ユーザーの操作に応じて現在の履歴エントリの状態オブジェクトまたはURLを更新する場合に特に便利です。
単に履歴エントリを更新したいreplaceState()場合はpushState()、それ以外の場合はを使用します。これにより、古いエントリが保持され、新しいエントリが作成されます。これらは似ていますが、どちらも効果が異なるため、新しい履歴エントリを置き換えるか作成するかによって異なります。
私がカードのデッキを他のカードの上に重ねて(表向きに)配っていると考えてください。あなたは一番上のカード(つまり、最後に配ったカード)しか取ることができません。ハートのジャックを山に置いたとしましょう。を使用する場合は次のカードのreplaceStateために、そのジャック・オブ・ハーツを外して次のカードを置きます。一番上のカードを交換したばかりなので、カードの数は同じです。pushState代わりに使用した場合は、次のカードをJack of Heartsの上に置きます(したがって、両方が山に存在し、山は1枚上になります)。
URLと同様にカードを交換すると、URL履歴が変更されます。