์ด ๊ธ์ history ๋ํด์ ๋ค๋ฃจ์์ต๋๋ค.
โ ๏ธ ์ ๋ฆฌํ ๋ด์ฉ์ ์คํ๋ ์๋ชป๋ ์ ๋ณด๊ฐ ์์ ์ ์์ต๋๋ค. ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค
history๋ ๋ธ๋ผ์ฐ์ ์ ์ธ์
๊ธฐ๋ก! ์ฆ ํ์ฌ ํ์ด์ง๋ฅผ ๋ถ๋ฌ์จ ํญ ๋๋ ํ๋ ์์ ๋ฐฉ๋ฌธ ๊ธฐ๋ก์ ์กฐ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
ํ์คํ ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ์์ ํ์ด์ง ๋ก๋ฉ์ ํ๋ฉด, ์ธ์
ํ์คํ ๋ฆฌ๋ผ๋ ๊ฒ์ ๊ฐ๋๋ฐ ์ธ์
ํ์คํ ๋ฆฌ๋ ํ์ด์ง๋ฅผ ์ด๋ํ ๋๋ง๋ค ์์ด๊ฒ ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๋ค๋ก๊ฐ๊ธฐ ์ ์ด์ ํ์ด์ง๋ก ๊ฐ๊ฑฐ๋ ๋ค๋ก ๊ฐ ์ดํ ๋ค์ ์์ผ๋ก ๊ฐ๋ ๋ฑ์ ์ด๋์ด ๊ฐ๋ฅํ๋ค.
history.pushState(state, title, url)
state
์๋ก์ด ์ธ์
๊ธฐ๋ก ํญ๋ชฉ์ ์ฐ๊ฒฐํ ์ํ ๊ฐ์ฒด
title
์ง๊ธ์ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ title ๋งค๊ฐ๋ณ์๋ฅผ ๋ฌด์ํ๋ค.
url
์ธ์
ํ์คํ ๋ฆฌ์ ์๋ก ๋ฃ์ url์
๋๋ค. aํ๊ทธ๋ฅผ ํด๋ฆญํ๊ฑฐ๋ location.href๋ก url์ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ํ๋ฉด์ด ๋ฆฌ๋ก๋ ๋์ง ์๋๋ค
** state์ title์ ๋ณดํต null์ ๋ฃ์ด์ ์์ ํ๋ค.
history.replaceState(state, title, url)
state
์๋ก์ด ์ธ์
๊ธฐ๋ก ํญ๋ชฉ์ ์ฐ๊ฒฐํ ์ํ ๊ฐ์ฒด
title
์ง๊ธ์ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ title ๋งค๊ฐ๋ณ์๋ฅผ ๋ฌด์ํ๋ค.
url
์ธ์
ํ์คํ ๋ฆฌ์์ ํ์ฌ url๊ณผ ๋์ฒด๋ url. a ํ๊ทธ๋ฅผ ํด๋ฆญํ๊ฑฐ๋ location.href๋ก url์ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ด url์ด ๋ณ๊ฒฝ๋๋ค๊ณ ํด์ ํ๋ฉด์ด ๋ฆฌ๋ก๋ ๋์ง ์๋๋ค
** state์ title์ ๋ณดํต null์ ๋ฃ์ด์ ์์ ํ๋ค.
- ํ์ฌ location์ pathname์ผ๋ก ์ด๋ค ๊ฒ์ ๊ทธ๋ ค์ผ ํ ์ง ๊ฒฐ์ ํ๋ route ๋ก์ง์ด ํ์ํ๋ค.
- ์ค์ ๋ก ํ๋ฉด์ด๋์ ์๋์ง๋ง pushstate๋ฅผ ํธ์ถ ์ํฌ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- ์์ผ๋ก ๊ฐ๊ธฐ ๋๋ ๋ค๋ก๊ฐ๊ธฐ ์์ popstate ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํด์ผํ๋ค.
- history๋ฅผ ์ด์ฉํ๋ฉด ํ๋ฉด ์ด๋์ ์ผ์ผํค์ง ์๊ณ ๋ ๋ธ๋ผ์ฐ์ ์ url์ ๋ฐ๊ฟ ์ ์๋ค.
- history api์ url์ ๋ณ๊ฒฝํ ํ ์๋ก๊ณ ์นจํ๋ฉด, ๋ณ๊ฒฝ๋ url์ ์ค์ ํ์ผ์ ์ฐพ์ผ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ 404์๋ฌ๊ฐ ๋๋ค. => 404์ผ ๊ฒฝ์ฐ root์ index.html๋ก ์์ฒญ์ ๋๋ ค์ฃผ๋ ์ฒ๋ฆฌ๊ฐ ํ์
history api์ ๋ํด์ ๋ค๋ฃจ์๋ค. ์๋ฌด๋๋ ์ฒ์ ์๊ฒ ๋์๊ธฐ ๋๋ฌธ์ ์ข ๋ฎ์ค์๋ฌ๊น..?๐ ์ ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์กํธ์์ ๋ผ์ฐํฐ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ๋๊ฑธ๊น?
๋ฅผ ์ฐพ์ ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ํ์
์ ์ฐพ์๋ณด์๋ค. React๋ ๋๋ถ๋ถ React-Router ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๋ผ์ฐํ
์ ํด๊ฒฐํ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ location์ด๋ history๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ด์ฅ api์ ์๋ฒฝํ๊ฒ ์ฐ๋์ด ๋๋ค๊ณ ํ๋ค. ์ด ๋ถ๋ถ์ ๋ค์ ์์ธํ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
๊ณผ์ ๋ฅผ ์ด์ ์๋ฒฝ์ 4์๊ฐ๋์ ๊ธฐ๋ฅ ํ๊ฐ๋ฅผ ์ค์ค๋ก ๊ตฌํํด๋ณธ ํ์๋ ์ง๋๊ฐ ํํ ๋๊ฐ๋ค.. ๐ ๊ธฐ๋ฅ ํ๋์ 4์๊ฐ์ด๋ผ๋!ใ
ใ
๊ธฐ์
์์ ๋ฐ๋๋ผJS๋ก ๊ณผ์ ๋ฅผ ๋ณผ ๋ 3์๊ฐ ์ ๋ ์ฃผ์ด์ง๋ ๊ฑธ๋ก ์๋๋ฐ ์ง๊ธ ์ค๋ ฅ์ด๋ฉด ๊ธฐ๋ฅ ํ๋ ๊ตฌํํ๋ฉด ๋์ผ๊ฑฐ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋ค๋ค ์ด๋ป๊ฒ ๊ทธ๋ ๊ฒ ์ํ์๋์ง!! ๋๋ ๋ฐ๋๋ผJS์ ์ต์ํด์ ธ์ผ์ง!
์์ฆ ์ ๋ง CSS๋ฅผ ์ ์ฐ๊ณ ์ถ๋ค. ์ ๋๋ฉ์ด์
์ด๋ผ๋์ง ๋ฐ์ํ์ด๋ผ๋์ง ์ฌ์ฉ์๊ฐ ๋๋ผ๊ธฐ์๋ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐ๋๋๋ก? ๋ง๋ค๊ณ ์ถ๋ค.
๋ค๋ฅธ ํ๋กฑ์ด ๋ถ๋ค์ด ๊ณผ์ ๋ผ ๋ ์ด์๊ฒ ๊พธ๋ฉฐ์ ์ ์ถํ์๋๋ฐ ๋ณธ๋ฐ์์ผ๊ฒ ๋ค. ๋๋ ๊ทธ๋ฅ ๊ธฐ๋ณธ.. ๊ฐ์..๊ทธ๋๋ก ๋ฐ..ใ
ใ
๋์ฑ ๋ ์ด์ฌํ ์ด์์ผ์ง๐ฅ๐ฅ๐ฅ
ํ ๊ฒ์ด ๋๋ฌด ๋ง๋ค์~~ ๋น๊ธ๋น๊ธ ๐ตโ๐ซ ์๋จธ๋ฆฌ๊ฐ ์์ฆ ๋๋ฌด ๊ฑฐ์ฌ๋ฆฐ๋ค,, ๊ดํ ์๋๋๋ด์๐
๋ฌผ์๊ฒฝ์ด์๊ตฐ์