replaceState () проти pushState ()


91

Я читав і шукав переваги / недоліки між replaceState()& pushState(). Прочитайте також статтю Mozilla , і цей цікавий тест, але мені все ще незрозумілі відмінності.

Хтось хоче пояснити, чим вони відрізняються?


Відповіді:


160

replaceState()буде змінити URL - адреса в браузері (тобто. натиснувши на кнопку назад не поверне вас)

pushState() змінить URL-адресу і збереже стару в історії браузера (тобто. натискання кнопки "Назад" поверне вас назад)


57

За вашим посиланням

history.replaceState () працює точно так само, як history.pushState (), за винятком того, що replaceState () змінює поточний запис історії, а не створює новий.

replaceState () особливо корисний, коли ви хочете оновити об'єкт стану або URL-адресу поточного запису історії у відповідь на певну дію користувача.

Якщо ви просто хочете оновити запис історії, використовуйте replaceState()інше використання pushState(), яке збереже старий запис і створить новий. Вони схожі, але обидва мають різні ефекти, тож це залежить від того, чи хочете ви замінити чи створити нові записи історії.

Подумайте про це так, ніби я роздаю колоду карт, поклавши одну карту поверх іншої (лицьовою стороною вгору), і ви можете взяти лише верхню карту в купі (тобто останню карту, яку я роздав). Скажімо, я поклав на купу Джека Сердець. Тепер наступна карта, якщо я використовую replaceState, тому я знімаю цього Джека Серця і одягаю наступну карту. Кількість карток однакова, оскільки ми щойно замінили верхню карту. Якби я використав pushStateзамість цього, я б поклав наступну карту поверх Джека Серця (отже, тепер обидва існують у стосі, і купа стоїть на одну карту вище).

Поміняйте місцями картки за аналогією з URL-адресами, і таким чином змінюється історія URL-адрес.


2
"history.replaceState () працює точно так само, як history.pushState (), за винятком того, що replaceState () змінює поточний запис історії, замість того, щоб створювати новий." цю цитату я знайшов тут developer.mozilla.org/en-US/docs/Web/API/History_API . Ви можете пояснити, що таке глобальна історія браузера. там сказано, що запис створюється у світовій історії браузера.
Raghu DV

Що означає "глобальна історія браузера"? @RaghuDV
stevemao

@keyboardP Awesome пояснив. Дуже дякую.
michael.zech
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.