Saya telah membaca dan mencari keuntungan / kerugian antara replaceState()& pushState(). Baca juga artikel Mozilla , dan ini tes menarik tapi masih belum jelas perbedaannya bagi saya.
Adakah yang peduli untuk menjelaskan apa perbedaannya?
history.replaceState () beroperasi persis seperti history.pushState () kecuali bahwa replaceState () memodifikasi entri riwayat saat ini daripada membuat yang baru.
replaceState () sangat berguna ketika Anda ingin memperbarui objek status atau URL dari entri riwayat saat ini sebagai tanggapan atas beberapa tindakan pengguna.
Jika Anda hanya ingin memperbarui entri riwayat, gunakan replaceState()jika tidak gunakan pushState(), yang akan menyimpan entri lama dan membuat yang baru. Keduanya serupa tetapi keduanya memiliki efek yang berbeda sehingga tergantung pada apakah Anda ingin mengganti atau membuat entri riwayat baru atau tidak.
Anggap saja seperti saya sedang membagikan setumpuk kartu dengan meletakkan satu kartu di atas yang lain (menghadap ke atas) dan Anda hanya dapat mengambil kartu teratas di tumpukan (yaitu kartu terakhir yang saya bagikan). Katakanlah saya menaruh Jack of Hearts di tumpukan. Sekarang untuk kartu berikutnya jika saya gunakan replaceState, jadi saya melepas Jack of Hearts itu dan memasang kartu berikutnya. Jumlah kartu sama karena kami baru saja mengganti kartu teratas. Jika saya menggunakan pushStatesebagai gantinya, saya akan meletakkan kartu berikutnya di atas Jack of Hearts (jadi sekarang keduanya ada di tumpukan dan tumpukan satu kartu lebih tinggi).
Tukar kartu dalam analogi dengan URL dan begitulah riwayat URL diubah.
"history.replaceState () beroperasi persis seperti history.pushState () kecuali bahwa replaceState () mengubah entri riwayat saat ini daripada membuat yang baru." Kutipan ini saya temukan di sini developer.mozilla.org/en-US/docs/Web/API/History_API . dapatkah Anda menjelaskan apa itu riwayat browser global. dikatakan entri dibuat pada riwayat browser global.
Raghu DV
Apa yang dimaksud dengan "riwayat browser global"? @RaghuDV
Jawaban:
replaceState()
akan mengubah URL di browser (mis. menekan tombol kembali tidak akan membawa Anda kembali)pushState()
akan mengubah URL, dan menyimpan yang lama di riwayat browser (mis. menekan tombol kembali akan membawa Anda kembali)sumber
Dari tautan Anda
Jika Anda hanya ingin memperbarui entri riwayat, gunakan
replaceState()
jika tidak gunakanpushState()
, yang akan menyimpan entri lama dan membuat yang baru. Keduanya serupa tetapi keduanya memiliki efek yang berbeda sehingga tergantung pada apakah Anda ingin mengganti atau membuat entri riwayat baru atau tidak.Anggap saja seperti saya sedang membagikan setumpuk kartu dengan meletakkan satu kartu di atas yang lain (menghadap ke atas) dan Anda hanya dapat mengambil kartu teratas di tumpukan (yaitu kartu terakhir yang saya bagikan). Katakanlah saya menaruh Jack of Hearts di tumpukan. Sekarang untuk kartu berikutnya jika saya gunakan
replaceState
, jadi saya melepas Jack of Hearts itu dan memasang kartu berikutnya. Jumlah kartu sama karena kami baru saja mengganti kartu teratas. Jika saya menggunakanpushState
sebagai gantinya, saya akan meletakkan kartu berikutnya di atas Jack of Hearts (jadi sekarang keduanya ada di tumpukan dan tumpukan satu kartu lebih tinggi).Tukar kartu dalam analogi dengan URL dan begitulah riwayat URL diubah.
sumber