게시글 수정 : ①게시글 상세 페이지 > ②수정 페이지 > ③게시글 상세 페이지
이 경우 ③게시글 상세 페이지에서 뒤로가기(history back) 을 하게되면 ②수정 페이지로 가게 된다.
수정 후 뒤로가기 : ③게시글 상세 페이지 > ②수정 페이지 > ①게시글 상세 페이지
다만 수정을 완료했는데 수정하기 전 데이터를 가지고 있는 수정페이지로 이동하는 것이 필요가 없어 보인다.
게시글 삭제 : ①게시글 목록 페이지 > ②게시글 상세 페이지 > ③게시글 삭제 후 게시글 목록 페이지
③게시글을 삭제 후 게시글 목록 페이지에서 뒤로가기를 누르면 ②게시글 상세 페이지로 이동하게 된다.
삭제 후 뒤로가기 : ③게시글 삭제 후 게시글 목록 페이지 > ②게시글 상세 페이지 > ①게시글 목록 페이지
물론 삭제하기 전 데이터도 함께 화면에 표시된다. 삭제된 글을 다시 볼 수 있다는 것도 역시 필요 없다.
이러한 경우들은 history에 url이 남았기 때문이다.
클라이언트에서 location.replace() 를 사용하면 남지 않는다.
submit > redirect >>> 변경 >>> ajaxSubmit > location.replace()
location.href >>> 변경 >>> location.replace()
단, react-native webview를 사용했을때는 뒤로 가기가 먹혀 버린다. 이러한 경우 if
문을 사용 하여 history.replaceState 를 사용 하여 준다.
history.replaceState(stateObj, title, [url])
stateObj
상태 개체는 replaceState메서드에 전달 된 기록 항목과 관련된 JavaScript 개체입니다 . 상태 개체는 null.
title
현재 대부분의 브라우저는이 매개 변수를 무시 하지만 나중에 사용할 수 있습니다. 여기에 빈 문자열을 전달하면 향후 메서드 변경에 대해 안전해야합니다. 또는 주에 대한 짧은 제목을 전달할 수 있습니다.
url
기록 항목의 URL입니다. 새 URL은 현재 URL과 동일한 출처 여야합니다. 그렇지 않으면 replaceState에서 예외가 발생합니다.
function _replace(url){
if(history.replaceState){
// history의 replaceState 기능이 사용 가능한 경우
history.replaceState(null, document.title, url);
history.go(0);
}else{
// history의 replaceState 기능이 사용 가능하지 않은 경우 location.replace(url);
}
}