Подтвердить что ты не робот

ReplaceState() vs pushState()

Я читал и искал преимущества/недостатки между replaceState() и pushState(). Читайте также Mozilla статью и интересный но все еще остается неясным для меня различия.

Кто-нибудь может объяснить, в чем они отличаются?

4b9b3361

Ответ 1

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

pushState() изменит URL-адрес и сохранит старый в истории браузера (т.е. нажатие кнопки "Назад" вернет вас)

Ответ 2

Из вашей ссылки

history.replaceState() работает точно так же, как history.pushState() за исключением того, что replaceState() изменяет текущую запись истории создания нового.

replaceState() особенно полезна, когда вы хотите обновить объект состояния или URL-адрес текущей записи истории в ответ на некоторые действий пользователя.

Если вы хотите просто обновить запись истории, используйте replaceState() иначе используйте pushState(), который сохранит старую запись и создаст новую. Они похожи, но оба имеют разные эффекты, поэтому зависит от того, хотите ли вы заменить или создать новые записи истории.

Подумайте об этом, как будто я разузнал колоду карт, поставив одну карту поверх другой (лицом вверх), и вы можете взять только верхнюю карту в кучу (т.е. последнюю карточку, которую я имел в виду). Скажем, я положил Джека Сердца на кучу. Теперь для следующей карты, если я использую replaceState, я беру этот Jack of Hearts и кладу следующую карточку. Количество карт одинаково, так как мы просто заменили верхнюю карту. Если бы я использовал pushState вместо этого, я бы поставил следующую карту поверх Jack of Hearts (так что теперь оба существуют в куче, а куча - одна карта выше).

Поменяйте карты по аналогии с URL-адресами и измените историю URL-адресов.