replaceState () vs pushState ()

Respuestas:

159

replaceState()se cambie la dirección URL en el navegador (es decir. presionando el botón de atrás no le llevará de vuelta)

pushState() cambiará la URL y mantendrá la anterior en el historial del navegador (es decir, presionar el botón Atrás lo llevará de regreso)


fuente
57

Desde tu enlace

history.replaceState () funciona exactamente como history.pushState () excepto que replaceState () modifica la entrada actual del historial en lugar de crear una nueva.

replaceState () es particularmente útil cuando desea actualizar el objeto de estado o la URL de la entrada actual del historial en respuesta a alguna acción del usuario.

Si simplemente desea actualizar la entrada del historial, use de lo replaceState()contrario use pushState(), que mantendrá la entrada anterior y creará una nueva. Son similares pero ambos tienen efectos diferentes, por lo que depende de si desea reemplazar o crear nuevas entradas del historial.

Piense en ello como si estuviera repartiendo una baraja de cartas poniendo una carta encima de la otra (boca arriba) y usted solo puede tomar la carta superior de la pila (es decir, la última carta que repartí). Digamos que puse una jota de corazones en la pila. Ahora para la siguiente carta si la uso replaceState, así que saco esa Jota de Corazones y pongo la siguiente carta. El número de cartas es el mismo ya que acabamos de reemplazar la carta superior. Si hubiera usado en su pushStatelugar, habría puesto la siguiente carta encima de la Jota de Corazones (así que ahora ambas existen en la pila y la pila es una carta más alta).

Cambie las tarjetas en la analogía con las URL y así es como se modifica el historial de URL.

keyboardP
fuente
2
"history.replaceState () funciona exactamente como history.pushState () excepto que replaceState () modifica la entrada actual del historial en lugar de crear una nueva". esta cita que encontré aquí developer.mozilla.org/en-US/docs/Web/API/History_API . ¿Puede explicar qué es el historial global del navegador? dice que la entrada se crea en el historial global del navegador.
Raghu DV
¿Qué significa "historial global del navegador"? @RaghuDV
stevemao
@keyboardP Awesome explicado. Muchas gracias.
michael.zech