react-router๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ์ํํ ์ ์์์ต๋๋ค.
browserHistory.push({ pathname: "/", state: { message: 'This is a message forwarded in a state.' } })
๋ค์/๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉ์๋ฅผ ๋ฆฌ๋๋ ์ ํ๊ณ ์ผ๋ถ ๊ฐ์ ์ ํ์ด์ง๋ก ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด์ ๊ฐ์ ์์ ์ ์ํํ ์ ์์ต๋๊น?
ํ์ฌ๋ก์๋ ๋ถ๊ฐ๋ฅํ๋ฉฐ ๊ฐ๊น์ด ์ฅ๋์ ์ง์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ด์ด์ ์ด๊ฒ์ด ์ ๋ง๋ก ํ์ํ์ง ๋ด ์๋ค.
์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ์ฌ ์ด ์์ ์ ์ํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด ๋ง์ nkzawa๊ฐ ๋งํ๋ฏ์ด ์ฟผ๋ฆฌ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ๋ฌํ์ฌ ๋น์ทํ ๊ฒ์ ์ป์ ์ ์์ง๋ง http://www.example.com/?message=This%20is%20a%20long%20message%20forwarded%20to%20be%20displayed
๋ก URL์ ์ค์ผ์ํค์ง ์๊ณ react-router๊ฐ ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ํ ์ ์ก์ ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
as
๋ฅผ ์ฌ์ฉํ์ฌ URL์ ์์ฅํ ์ ์์ต๋๋ค.
๊ธ์์, ํ์ง๋ง as
์ ์ฌ์ฉํ๋ค๋ฉด ๊ฒฝ๋ก ์ด๋ฆ์ props.url.pathname ์ ์ค์ ๊ฒฝ๋ก ์ด๋ฆ์ ์ ์งํ์ง ์์ต๋๋ค. ์ด๋ ์ฟผ๋ฆฌ์ ์ ๋ฌํ ๋ ๋ง์ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ํ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ _cleaner_์
๋๋ค.
ํ๋ก์ ํธ๋ฅผ next.js๋ก ํฌํ ํ๊ณ ์์ผ๋ฉฐ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ์ฌ ์๋ํ๋๋ก ๋ง๋ ์ดํ๋ก ํฐ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค. .
๊ทํ์ ์๊ฒฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ด ๋นํ์ฑ ์์ธ์ ๋ซ์ต๋๋ค ๐
์ด๊ฑฐ ์ฌ๋ฆฐ์ง 1๋ ์กฐ๊ธ ๋์๋๋ฐ ์์ง๋ ์ง์ ์๋๋์?
localStorage, sessionStorage, ๋ณ์, Redux ์ ์ฅ์ ๋ฑ์ ํ์ํ ์ํ๋ฅผ ์ ์ฅํ ๋ค์ getInitialProps์์ ์ฌ์ฉํ ์ ์์ต๋๋ค(ํด๋ผ์ด์ธํธ ์ธก์์ ์คํ ์ค์ธ์ง ํ์ธ).
nextjs๊ฐ react-router ์ง์์ ์์ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์ผํ ๊ธฐ๋ฅ์ ์ํฉ๋๋ค.
์ด์ ์๋ CRA๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ณ ๊ทธ๊ณณ์์ ๋ผ์ฐํธ๋ ๊ตฌ์ฑ ์์์ ์ํ๋ฅผ ์ ์กํ๊ณค ํ์ต๋๋ค. nextjs์ ๋์ผํ ๊ธฐ๋ฅ์ ์ํฉ๋๋ค.
@sergiodxa ๊ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์์ ์ ์ํ์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์์ ์ข์ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค Router.push()
๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ๋์ค์ withRouter
๋ก ๊ฒ์ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
๋์ผํ ๊ธฐ๋ฅ์ ์ํฉ๋๋ค. ์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋์ผํ ๊ธฐ๋ฅ์ ์ํฉ๋๋ค. ์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ ๋ ์
์ด ๋ฌธ์ ์ ๊ด๋ จ๋ ๋ ๋ค๋ฅธ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํด๋ฆญ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๊ฐ ์๋ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค. ํด๋ฆญํ๋ฉด ์ธ๋ถ ์ ๋ณด ํ์ด์ง๊ฐ ์ด๋ฆฝ๋๋ค. ํ์ฌ next.js๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ID๋ฅผ ์ ๋ฌํ ๋ค์ useEffect ๋ฐ axios ํธ์ถ์ ์ฌ์ฉํ์ฌ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ง๋ง ์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ํด๋น ํ์ด์ง๋ก ์ํ๋ฅผ ๋ณด๋ผ ์ ์๊ธฐ๋ฅผ ์ ๋ง๋ก ๋ฐ๋์ต๋๋ค.
์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@sergiodxa ์, ์์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ๋ผ์ฐํฐ์ ์ฐ๊ฒฐํ๋ฉด ์ ๋ฌํ๋ ๊ฐ์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ถ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ผ์ฐํฐ ํ์ ์ด๋ฒคํธ์ ์ฐ๊ฒฐ๋๋ฉฐ ๋ค๋ฅธ ์ปจํ ์คํธ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ด redux ์คํ ์ด์ ํธ์ํ๋ฉด ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ง๋์ง ์๋๋ก ์ ์ธํ๊ณ ์์ ์ธก์์ ๋ช ํํ ๋ฉ์์ง ์์ ๋ ์ ๋ฌํด์ผ ํฉ๋๋ค.
์ฟผ๋ฆฌ ๋ฌธ์์ด์ ์ถ๊ฐํ๋ฉด ์ฑ ๊ฐํผ๋ฅผ ์ฌ์ฉํ๊ณ ๋์ค์ ๋์์ฌ ์ ์๋ ์๊ตฌ ๋งํฌ๊ฐ ๋ฉ๋๋ค.
ํ์ง๋ง router.push
๋ฅผ ํตํด์๋ง ๋ค์ ํ์ด์ง๋ก ํธ์ํ ์ ์๊ณ ๋ณด์์ ํ ํ์๊ฐ ์์ต๋๋ค. ๊ฐ์ ํด๋น ์ปจํ
์คํธ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐ๊ฒฐ ํ๋์ ์ ๋งค์ฐ ์ ์ฌ
2017๋
1์ 15์ผ ์ดํ ์๋ฃจ์
์ด ์์ต๋๊น?
์ฐ๋ฆฌ๋ ๊ทธ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค:
์ฌ๊ธฐ์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค
Router.push()
๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ๋์ค์withRouter
๋ก ๊ฒ์ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
nextjs์ ์์ผ๋ฉด ์ข์ํ ๋ฐ
์ฟผ๋ฆฌ ๋งค๊ฐ ๋ณ์๋ฅผ ์จ๊ธฐ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ์ญ์์ค.
Router.push(`/main?userName=${userName}`, 'main')
๋ฉ์ธ ํ์ด์ง๋ณด๋ค url์์ /main
๋ง ๋ณผ ์ ์๊ณ ,
console.log(Router.route)
์ฟผ๋ฆฌ ํ์
pathname: "/main"
query: {userName: "fadsfasd"}
asPath: "main"
๋ค, ์ฌ์ค์
๋๋ค. Btw ๋ผ์ฐํฐ์ ๋ ๊ฐ์ ๋ฌธ์์ด์ด ํ์ํ๋ค๋ ๊ฒ์ด ์ ๋ง ์ด์ํฉ๋๋ค. react-router
์์ด๋ ์๋ฆ๋ต๊ฒ ์๋ํฉ๋๋ค. ์ ๊ทธ๋ด๊น์?
๋ง๋ค๊ณ ์ถ์ ๋ถ๋ค์ Context Api
๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
Next.js๋ shallow: true
๋ฅผ ์ํ์ผ๋ก ์ ๋ฌํ๋ $ router.push()
๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ๊ฐ๋จํ ์ํ ๊ด๋ฆฌ์
๋๋ค.
https://nextjs.org/docs/api-reference/next/router#routerpush
์ด๊ฒ์ ์ฌ๊ณ ํ๊ณ ์ ํ์ง๋ง, ์๋ฅผ ๋ค์ด ํ์คํ ๋ฆฌ ์ํ ์๋ฒ ์ธก์์ ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ ํ์คํ ๋ฆฌ ์ํ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ฐ์ ์ด์ ์๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ๋ฅญํ ์ ์์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ถ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค.
์ด๊ฒ์ ๋ค์ ์ฌ๋ ๊ฒ์ด ์ด ๊ธฐ๋ฅ์ ๋ํ RFC๋ฅผ ์์ฑํ์ง ์์ ๊ฒ์ด๋ผ๋ ์๋ฏธ๋ ์๋๋ฉฐ ์ด ๊ธฐ๋ฅ์ ์ํ๋ ์ฌ๋๋ค์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
Router.push({
pathname: '/',
query: { message: 'This is a message forwarded in a state.' }
}, '/')
2๋ ์ด์ ์์ง ๊ตญ๊ฐ ๊ธฐ๋ฅ์ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ๋๋ค.
Router.push({ pathname: '/', query: { message: 'This is a message forwarded in a state.' } }, '/')
์ด๊ฒ์ ์ฌ์ ํ โโ๋ด๋ถ ์ํ๊ฐ ์๋๋ฉฐ ๋ง์คํฌ ๊ธฐ๋ฅ์ด ์๋ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ๋๋ค. ์ ์๊ฐ์๋ ์ด๋ ์๋นํ ์ด์ํ ์ผ์ ๋๋ค.
๋๋ React ์ํ๊ณ์ ์ต์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค
router.push(
{ pathname: '/hello-world' },
'/hello-world/2',
{ step: 2 }
);
๋์๊ฐ์ PopState ์ ์ ํ์ธํ๋ฉด ์ต์
์ํ์ { step: 2 }
๊ฐ ํฌํจ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ router
๊ฐ์ฒด์์๋ง ์ด๊ฒ์ ํ์๋ก ํฉ๋๋ค.
๋๋ React ์ํ๊ณ์ ์ต์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค
router.push( { pathname: '/hello-world' }, '/hello-world/2', { step: 2 } );
๋์๊ฐ์ PopState ์ ์ ํ์ธํ๋ฉด ์ต์ ์ํ์
{ step: 2 }
๊ฐ ํฌํจ๋ฉ๋๋ค.์ฐ๋ฆฌ๋
router
๊ฐ์ฒด์์๋ง ์ด๊ฒ์ ํ์๋ก ํฉ๋๋ค.
์๋์ ์ธ ํ๋์ด ์๋๋ผ ๋ ๋ค๋ฅธ ์ผ์์ ์ธ ํดํน์ฒ๋ผ ๋ณด์ ๋๋ค. ์์๋๋ ์ต์ ์ ๋ฌธ์ ์ ๋์ด๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋น์ทํ ๊ฒ์ด ์์๋๋ก ํ๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@likerRr ๋ถ๋ช
ํ ๋ชจ๋ ์ต์
๋งค๊ฐ๋ณ์๊ฐ window.history.state
์ ์ ๋ฌ๋๊ณ ์์ต๋๋ค. ๋ด ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
window.history.state == { step: 2 }
@likerRr ๋ถ๋ช ํ ๋ชจ๋ ์ต์ ๋งค๊ฐ๋ณ์๊ฐ
window.history.state
์ ์ ๋ฌ๋๊ณ ์์ต๋๋ค. ๋ด ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
window.history.state == { step: 2 }
๊ทธ๋ฐ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์จ๋ , ๋ฌธ์ํ๋๊ธฐ ์ ๊น์ง๋ prod์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ๋ฌ ์ต์ ์ ๊ตฌํ์ ์ธ์ ๋ ์ง ๋ณ๊ฒฝ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ค๋ง: ํ์คํ ๋ฆฌ ์ํ์ ๋ํ ๋ ๋ค๋ฅธ ๋ฌธ์ (?)๊ฐ ์ง์๋๋ค๋ ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ "๋ค๋ก"/"์์ผ๋ก" ๋ฒํผ์ ์ฌ์ฉํ์ฌ ํ๋ ์ดํ๋ฉด ๋๋ถ๋ถ ์๊ธฐ์น ์์ ๋์์ด ๋ฐ์ํฉ๋๋ค.
๋ด๊ฐ ์ดํดํ๋ ํ ์ปค๋ฎค๋ํฐ๊ฐ ์ํ๋ ์ฌ์ฉ ์ฌ๋ก๋ ํ ํ์ด์ง์์ ๋ค๋ฅธ ํ์ด์ง๋ก ์ ํํ๋ ๋์์๋ง ๋จ๊ฒ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด๋ฉฐ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ง์ฐ๋ ๋ฐ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฐ์ดํฐ๋ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ "๋ค๋ก/์์ผ๋ก"๋ฅผ ํด๋ฆญํ ๋ ๋ค์ ๋ํ๋์ง ์์์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๊ฒ์ด ์ต์ ์ ์ ์์ ๋๋ค(imo).
๋ค์ js๊ฐ ์ด๊ฒ์ ๊ณ ๋ คํ๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค. ์ฌ์ฉํ ์ ์์ต๋๋ค.
https://github.com/vercel/next.js/issues/771#issuecomment -612018764
1: ๊ตฌ๋
ํ์ด์ง์์:
const handleClick = useCallback((๋ง์ดํธ) => {
Router.push( /payment?mount=${mount}
, '/๊ฒฐ์ ');
}, []);
2: ๊ฒฐ์ ํ์ด์ง์์
useEffect(() => {
์์ {
์ฟผ๋ฆฌ: { ๋ง์ดํธ },
} = ๋ผ์ฐํฐ;
!mount && Router.push('/campaign-overview/subscription');
console.log('PaymentVM:React.FC -> ๋ง์ดํธ', ๋ง์ดํธ);
}, []);
์ฝ์ ๋ธ๋ผ์ฐ์ ์์ mount
์ ๊ฐ์ ๋ณผ ์ ์์ต๋๋ค.
๋๋ ๋ฌธ์ ์ router.push์์ ์ํ๋ฅผ ์ ๋ฌํ ์ ์๋ค๋ ํธ๋ฆฌํจ์ ์ดํดํฉ๋๋ค.
๋ค์์ ์์ ํด๊ฒฐ์ฑ ์ด ๋ ๊น์?
๋ธ๋ผ์ฐ์ ์ history.pushState์ ์์น ๋ฌธ์์ด์ local useState๋ฅผ ์ฌ์ฉํ๊ณ , ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ํ๊ณ ์ ํ ๋ history.pushState๋ฅผ ์ฌ์ฉํจ๊ณผ ๋์์ ์๋ก์ด ๊ฐ์ local location state๋ก ์ค์ ํ๋ค. ์์น ๋ฌธ์์ด ์ํ์ ๋ํ ์ ๋ฐ์ดํธ๋ useEffect ์คํ์ ํธ๋ฆฌ๊ฑฐํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์น๋ฅผ ํ๊ฐํ๊ณ ์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ ์์๋ฅผ ๋ฐํํ๋ JS switch ๋ฌธ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ history.pushState ์์ด ๋์ผํ ๊ตฌ์ฑ ์์์ ๋๋ฌํ๋ ค๋ ๊ฒฝ์ฐ(์: ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํ๋ ๊ฒฝ์ฐ) ์์น๋ฅผ ๋์ ๋ค์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ก ๋ง๋ค ์ ์์ต๋๋ค. -- ์๋ํ์ง ์๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ ค๊ณ ํ์ต๋๋ค.
๋ง๋ค๊ณ ์ถ์ ๋ถ๋ค์
Context Api
๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.Next.js๋
shallow: true
๋ฅผ ์ํ์ผ๋ก ์ ๋ฌํ๋ $router.push()
๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ๊ฐ๋จํ ์ํ ๊ด๋ฆฌ์ ๋๋ค.
https://nextjs.org/docs/api-reference/next/router#routerpush
my in my getServerSideProps
์์ ๋ ๊ฐ์ ํธ์ถ์ ํ๊ณ ๊ทธ ์ค ํ๋๋ ๋ชจ๋ ๋ก๋์ ๋ํด ๋ค์ ์คํํด์ผ ํ๊ณ ํ๋๋ ์กฐ๊ฑด๋ง ๋ก๋ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํฉ๋๊น? ์ด๋ฅผ ์ํด Shallow: true
๋ ์ํ ๊ด๋ฆฌ์๊ฐ ์๋๊ฑฐ๋ getServerSideProps
๋ค์ ์คํํ๊ฑฐ๋ ์ ํ ์ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ณ๋ก ๋์์ด ๋์ง ์์ต๋๋ค.
์ด ์๋๋ฆฌ์ค์ ์๋ getServerSideProps
์์ ๋ ๊ฐ์ ๊ฐ๋ณ ํธ์ถ์ ์ํํ๋ ๊ฒฝ์ฐ์
๋๋ค. ํ๋๋ ํ์ด์ง์ ์ฃผ์ ์ฝํ
์ธ ์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ํ์ ๋งํฌ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ํธ์ถ์
๋๋ค. ์ด๊ธฐ ๋ ๋๋ง์์๋ ๋ ํธ์ถ์ด ๋ชจ๋ ์๋ฒ์ ์๊ธฐ๋ฅผ ์ํ์ง๋ง ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ํ์ ๋งํฌ๊ฐ ์์ผ๋ฏ๋ก ๋ค์ ๊ฐ์ ธ์ฌ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ๊ตญ๊ฐ๊ฐ ํ์ํ ์ด์ ์
๋๋ค.
์ ์ผํ ํด๊ฒฐ์ฑ
์ ์จ๊ฒจ์ง ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์ ํจ๊ป as
์ต์
์ ๋ณด๋ด๋ ๊ฒ์ด์ง๋ง ํ์ฌ ์ํ๊ฐ ํฌํจ๋ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ ๋ฌด๋ฆฌ๋ฅผ ์ ๋ฌํ๋ ๋ชจ๋ <Link/>
์ ๋ํด ์ฝ๋๊ฐ ๋์ฐํ ๊ฒ์
๋๋ค. (์ฌ์ค, ๋ด๊ฐ ๊ธ์ ์ธ ๋ ๋๋ ์ง์ ๋ href๋ก ์ด๋ํด์ผ ํ๊ณ ํ์ฌ ์ํ์ ํจ๊ป ์ฟผ๋ฆฌ ๊ฐ์ฒด๋ฅผ ๋ณด๋ด์ผ ํ๋ HOC ๋งํฌ๋ฅผ ๋ง๋ค์ด ๊ฐ <Linke/>
์ ์ํ ๊ฐ์ฒด๋ฅผ ์ธ ํ์๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์์ต๋๋ค. HOC์์๋ง ์ด๊ฒ์ ์ฒ๋ฆฌํฉ๋๋ค)
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๊ธฐ์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค
Router.push()
๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ๋์ค์withRouter
๋ก ๊ฒ์ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.