[javascript] replaceState () 대 pushState ()

나는 replaceState()& 사이의 장단점을 읽고 검색했습니다 pushState(). Mozilla의 기사 와이 흥미로운 테스트 도 읽어 보지만 여전히 차이점이 명확하지 않습니다.

그들이 다른 점을 설명하는 사람이 있습니까?



답변

replaceState() 의지 변경 브라우저에서 URL을 (예. 뒤로 버튼을 누르면 다시 당신을 데려 갈하지 않습니다)

pushState() URL을 변경하고 브라우저 기록에 이전 URL을 유지합니다 (예 : 뒤로 버튼을 누르면 뒤로 이동합니다).


답변

링크에서

history.replaceState ()는 replaceState ()가 새 기록 항목을 만드는 대신 현재 기록 항목을 수정한다는 점을 제외하면 history.pushState ()와 똑같이 작동합니다.

replaceState ()는 일부 사용자 작업에 대한 응답으로 현재 기록 항목의 상태 개체 또는 URL을 업데이트하려는 경우 특히 유용합니다.

단순히 히스토리 항목을 업데이트 replaceState()하려면 사용하십시오.pushState() . 그러면 이전 항목이 유지되고 새 항목이 생성됩니다. 비슷하지만 둘 다 다른 효과가 있으므로 새 기록 항목을 대체하거나 만들지 여부에 따라 다릅니다.

한 장의 카드를 다른 카드 위에 올려 놓고 (앞면이 보이도록) 카드 더미를 처리하는 것처럼 생각하면 더미에서 맨 위에있는 카드 만 가져올 수 있습니다 (예 : 내가 처리 한 마지막 카드). 내가 더미에 하트 잭을 놓았다고 가정 해 봅시다. 이제를 사용하면 다음 카드에 사용할 수 replaceState있으므로 Jack of Hearts를 빼고 다음 카드를 넣습니다. 상단 카드를 방금 교체했기 때문에 카드 수는 동일합니다. pushState대신 사용했다면 다음 카드를 Jack of Hearts 위에 놓았을 것입니다 (이제 둘 다 더미에 있고 더미가 한 카드 더 높습니다).

비유의 카드를 URL로 바꾸면 URL 기록이 수정됩니다.


답변