์ง๊ธ๊น์ง๋ react-router-dom์ ์ฌ์ฉํ๋ฉด์ ๊ทธ์ ํ์ด์ง๋ฅผ ์ง์ ํด์ฃผ๊ณ
๊ทธ ํ์ด์ง๋ก ์ด๋ํ๋ ์์
๋ง์ ํ์๋๋ฐ,
history์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์๊ฑฐ๋, ๋ฎ์ด์์ฐ๋ ์์
๋ ํ ์ ์๋๊ฑธ ์๊ฒ ๋์๋ค.
๊ทธ ์ค์์ history์ ๋ฉ์๋์ธ push์ replace๋ฅผ ์์๋ณด์ ๐
(๊ฐ๋จํ๊ฒ go๋ ์ ๋ฆฌํด๋ณด์)
history๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ฒฝ์์ ํ์คํ ๋ฆฌ ์ธ์
์ ๊ด๋ฆฌํ๋ ๋๊ตฌ์ด๋ฉฐ
stack์ผ๋ก ์์ด๊ฒ ๋๋ค.
react-router-dom์์์ history๋ ๋ผ์ฐํธ๋ก ์ฌ์ฉ๋ ์ปดํฌ๋ํธ์๊ฒ
match, location ๊ณผ ํจ๊ป ์ ๋ฌ๋๋ props ์ค ํ๋์ด๋ค.
๊ทธ ์ค์ go, push, replace ๋ฉ์๋์ ๋ํด ์ ๋ฆฌํด๋ณด์.
๋จ์ํ๊ฒ ์ด๋ ์์ ์ผ๋ก์ ์ด๋์ ํ ๋ ์ฌ์ฉํ๋ค.
history.go() ์์ ์ซ์๋ url์ ๋ฃ์ด์ ์ฌ์ฉํ๋ค.
go(1) = goForward()go(-1) = goBack()When using the router.push, it adds a new route to the top of the stack.
์์ฒ๋ผ, push๋ stack์ history ์ ์ผ ์์ ์๋ ๊ฒ์ด๋ค.
history.push()์์๋ ์ด๋ํ๊ณ ์ ํ๋ path๊ฒฝ๋ก๋ฅผ ๋ฃ์ด์ฃผ๊ฒ ๋๋ฉด
์ด์ history์์ ์์ด๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด ๊ฒฝ๋ก ์ด๋์
Home โก๏ธ Profile โก๏ธ Login
์์๋ก ์ด๋ํ๋ค๊ณ ํ์ ๋, history.push("/Profile")์ ๋ ๋ฆฌ๋ฉด
Home โก๏ธ Profile โก๏ธ Login โก๏ธ Profile
์์๋ก ์์ด๊ฒ ๋๋ค.
When you use the router.replace, you're overwritting the top of the the stack.
replace๋ history ์ ์ผ ์์ ์๋ ์์๋ฅผ ๋ฎ์ด์์ฐ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ๊ฒฝ๋ก ์ด๋์
Home โก๏ธ Profile โก๏ธ Login
์์๋ก ์ด๋ํ๋ค๊ณ ํ์ ๋, history.replace("/Profile")์ ๋ ๋ฆฌ๋ฉด
๋งจ ์์ ์๋ Login์ ๋ ๋ ค๋ฒ๋ฆฌ๊ณ , ์๋ก ๋ ๋ผ์จ Profile๋ก ๋ฎ์ด์์ด๋ค.
Home โก๏ธ Profile โก๏ธ Profile
์์๋ก ๋ฐ๋๊ฒ ๋๋ค.
router์์๋ ํ์คํ ๋ฆฌ๋ฅผ ๋จ๊ธฐ๊ธฐ ์ํด์ push๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋๋ถ๋ถ replace๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์ ํด์ ธ์๋ค.
replace๋ ์ด์ ์ ์์ธ ํ์คํ ๋ฆฌ๋ฅผ ๋ฎ์ด์์ฐ๊ธฐ ๋๋ฌธ์
ํ์คํ ๋ฆฌ๋ฅผ ๋จ๊ธฐ์ง ์๊ธฐ ์ํ ์์
์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
(์๋ฅผ ๋ค๋ฉด, ์๋ชป๋ ๊ฒฝ๋ก๋ก ์ ๊ทผํ๋ ค ํ๋ ๊ฒฝ์ฐ๋, login ํ ์ ์ ๊ฐ ๋ค์ login ์ฐฝ์ผ๋ก ์ ๊ทผํ๋ ค ํ ๋ ๋ฑ๋ฑ)
๋ค์ํฌ์คํ
์์๋ typescript์์ history๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฐ์ด๋ hook์ธ useHistory์ ๋ํด์๋ ์ ๋ฆฌํด๋ณผ ์์ !
์ฐธ๊ณ ํ์์ต๋๋ค :)