일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- webpack
- 클론코딩
- 웹팩
- 유사배열
- 실행 컨택스트
- 자바스크립트
- 비동기 작업
- 렉시컬 환경
- 이벤트 루프
- relatedTarget
- JavaScript
- 로컬터널
- pushstate
- 로드마크
- 화살표 함수
- 함수형
- 마이크로태스크
- 넘블
- 매클로태스크
- localtunnel
- 호출 스택
- AbortController
- 번들러
- fetch 취소
- Lexical environment
- 이터러블
- Call stack
- hoisting
- 호이스팅
- debounce
- Today
- Total
내가 보려고 만든 개발 공부 일지
history.pushState ( 화면 전환 ) 본문
React 에서 페이지 전환할때 사용하는 react-router 는 history.push 를 통해 마치 SSR 처럼 브라우저 주소를 바꿔주고
동시에 Root 엘리먼트의 내용물도 바꿔준다. 이걸 순수 JS 로 구현하고자 한다면 history.pushState 를 사용하면 된다.
History.pushState 는 페이지 이동 없이 주소만 바꿔준다. (브라우저의 뒤로가가 버튼이 활성화 된다.)
브라우저 페이지를 이동하게 되면 window.onpopstate 라는 이벤트가 발생하게 되는데, pushState 를 했을때는 popstate 이벤트가 발생하지않고, 뒤 / 앞으로 가기를 클릭 했을때 popstate 이벤트가 발생하게 된다.
즉, pushState 와 popstate 둘을 이용하여 SPA 의 페이지 전환을 구현할 수 있다.
기본 형태 - history.pushState(state, title, url);
State : 브라우저 이동 시 넘겨줄 데이터 (popstate 에서 받아서 원하는 처리를 해줄 수 있음)
Title : 변경할 브라우저 제목 (변경 원치 않으면 null)
Url : 변경할 주소
사용예)
window.onpopstate = function(e) {
console.log(`${JSON.stringify(e.state)} | ${location.origin} | ${location.pathname}`);
}
var state = {page_id : 1, data : 'test'};
var url = location.origin + '/myPage';
history.pushState(state, null, url);
위 코드를 실행하면 history.pushState 를 수행했을때 브라우저 주소에 /myPage 가 붙는걸 볼 수 있고,
뒤로가기를(원래 url) 한뒤 다시 앞으로(pushState로 추가된 url) 가기를 클릭 하면
콘솔 출력값으로 {"page_id":1,"data":"test"} | http://localhost:5000 | /myPage 가 출력된다.
'Javascript' 카테고리의 다른 글
자바스크립트 onfocus 와 onblur 그리고 relatedTarget (0) | 2022.02.05 |
---|---|
함수형 프로그래밍 vs 객체지향 프로그래밍 (0) | 2021.12.10 |
Javascript - Prototype object (0) | 2021.07.16 |
Javascript - in vs hasOwnProperty (0) | 2021.07.12 |
Javascript - 프로토타입? (0) | 2021.07.12 |