Czytałem i szukałem zalet / wad między replaceState()
& pushState()
. Przeczytaj także artykuł Mozilli i ten interesujący test, ale nadal nie jest dla mnie jasne różnice.
Czy ktoś chce wyjaśnić, czym się różnią?
Czytałem i szukałem zalet / wad między replaceState()
& pushState()
. Przeczytaj także artykuł Mozilli i ten interesujący test, ale nadal nie jest dla mnie jasne różnice.
Czy ktoś chce wyjaśnić, czym się różnią?
Odpowiedzi:
replaceState()
będzie zmienić adres URL w przeglądarce (np. naciskając przycisk wstecz nie zabierze Cię z powrotem)
pushState()
zmieni adres URL i zachowa stary w historii przeglądarki (np. naciśnięcie przycisku Wstecz spowoduje powrót)
Z twojego linku
history.replaceState () działa dokładnie tak samo, jak history.pushState (), z wyjątkiem tego, że replaceState () modyfikuje bieżący wpis historii zamiast tworzyć nowy.
replaceState () jest szczególnie przydatny, gdy chcesz zaktualizować obiekt stanu lub adres URL bieżącego wpisu historii w odpowiedzi na jakąś akcję użytkownika.
Jeśli chcesz po prostu zaktualizować wpis historii, użyj replaceState()
inaczej użyj pushState()
, co zachowa stary wpis i utworzy nowy. Są podobne, ale oba mają różne efekty, więc zależy to od tego, czy chcesz zastąpić lub utworzyć nowe wpisy historii.
Pomyśl o tym tak, jakbym rozdawał talię kart, kładąc jedną kartę na drugiej (odkrytą) i możesz wziąć tylko górną kartę ze stosu (tj. Ostatnią kartę, którą rozdałem). Powiedzmy, że położyłem na stosie Jack of Hearts. Teraz kolejna karta, jeśli używam replaceState
, więc zdejmuję tę waletkę kier i wkładam następną. Liczba kart jest taka sama, ponieważ właśnie wymieniliśmy górną kartę. Gdybym pushState
zamiast tego użył , położyłbym następną kartę na wierzchu waleta kier (więc teraz obie istnieją na stosie, a stos jest o jedną kartę wyższy).
Zamień karty w analogii z adresami URL i tak modyfikowana jest historia adresów URL.