2023.09.01 ~ 2023.09.27 ๋์ ์งํํ๋ ์๊ณจ๋ผ ํ๋ก์ ํธ์์ ํน์ ํฌ์คํธ ์์ธํ๋ณด๊ธฐ ํ์ด์ง๋ก ์ด๋ํ๋ ์ํฉ์ด ์์๋ค.
ํํ๋ฉด(/
) ๋๋ ํน์ ํฌ์คํธ ํ์ด์ง(/post/postId
)์์ ํน์ ํฌ์คํธ ์์ธํ๋ณด๊ธฐ ํ์ด์ง(/post/postId?show=true&voted=true
)๋ก ์ด๋ํ์ ๋, ๋ค๋ก ๊ฐ๊ธฐ๋ฅผ 2๋ฒ ํด์ผ ํน์ ํฌ์คํธ ํ์ด์ง๋ก ๋์๊ฐ๊ฑฐ๋, ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ์๋ฌด๋ฆฌ ๋๋ฌ๋ ๋ค๋ก๊ฐ๊ธฐ๊ฐ ์ ์ฉ๋์ง ์๋ ํ์์ด ๋ฐ์ํ๋ค.
๋ฌธ์ ์ ์ฒซ ๋ฒ์งธ ์์ธ์ url์ history
์ ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ณ๊ฒฝํ๋ ๋์๋ค์ด ์์ด๊ณ ์๋ ๊ฒ์ด๋ค.
ํน์ ํฌ์คํธ ์์ธํ๋ณด๊ธฐ ํ์ด์ง๋ก ์ด๋ํ ๋,
/postId
โ /postId?show=true
โ /postId?show=true&voted=true
์์ ๊ฐ์ ๋จ๊ณ๋ก url์ด ๋ณ๊ฒฝ๋๊ณ ์์๊ณ , setSearchParams
ํจ์๋ฅผ ํตํด ์ฟผ๋ฆฌ์คํธ๋ง์ด ์ฐจ๋ก๋๋ก ์ถ๊ฐ๋๊ณ ์์๋ค.
๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด์ด history
๋ฅผ ํ์ธํด๋ณด๋, setSearchParams
๋ฅผ ํตํด ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด url์ ๋ณ๊ฒฝํด์ฃผ๋ ๋์๋ค์ด history
stack์ ์์ด๊ณ ์์๋ ๊ฒ์ด๋ค.
์ฆ, navigate()
๋ฉ์๋๋ก ์ฃผ์๋ฅผ ์ด๋ํ ๋์ ๋ง์ฐฌ ๊ฐ์ง๋ก ์ฟผ๋ฆฌ์คํธ๋ง์ ์ถ๊ฐํ๋ ๋์๋ history
์ ์์ด๋ ๊ฒ์ด๋ค.
๋ ๋ฒ์งธ ์์ธ์ useEffect
ํ
๋ด์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ถ๊ฐํด์ฃผ๋ setSearchParams
ํจ์๊ฐ ์ฌ๋ฌ๋ฒ ํธ์ถ๋์ด history๊ฐ ์ฌ๋ฌ ๋ฒ ์์๋ ๊ฒ์ด๋ค.
์ปดํฌ๋ํธ์ ๋น์ฆ๋์ค ๋ก์ง ๋ถ๋ถ์์useEffect
ํ
๋ด์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ถ๊ฐํด์ฃผ๋ setSearchParams
ํจ์๊ฐ ํธ์ถ๋๊ณ ์์๋๋ฐ, useEffect
์ ์์กด์ฑ ๋ฐฐ์ด์ ์ฌ๋ฌ ๋ณ์ ๋ฐ ํจ์๊ฐ ๋ค์ด๊ฐ ์์ด์, useEffect
ํ
์ด ๋ง์ด ํธ์ถ๋๊ณ ์์๊ณ , ๊ทธ ์์์ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ถ๊ฐํด์ฃผ๋ ๋์์ด ์ด๋ฌ๋ฒ ๋์ด history๊ฐ ๋ง์ด ์์ด๊ณ ์์๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ๋ค๋ก๊ฐ๊ธฐ ๋์์ ๋๋ ์ ๋, history๊ฐ ๋ง์ด ์์ฌ์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ 2๋ฒ ๋๋ฌ์ผ ์ํ๋ ํ์ด์ง๋ก ๋์๊ฐ๊ธฐ๋ ํ๊ณ , /postId?show=true&voted=true
์์ /postId?show=true
๋ก ๋์๊ฐ๋ฉด ์ฌ๊ธฐ์ ์๋์ผ๋ก /postId?show=true&voted=true
๋ก ๋ค์ ๋ณด๋ด์ค ๋๋ ์์ด์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ์๋ฌด๋ฆฌ ๋๋ฌ๋ ์ํ๋ ํ์ด์ง๋ก ๋์๊ฐ์ง ์์ ๋๋ ์์๋ค.
useEffect
๋ด์ setSearchParams
ํจ์์ replace
์ต์
์ ์ฃผ์ด url์ history
์ ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ณ๊ฒฝํ๋ ๋์๋ค์ด ์์ด์ง ์๋๋ก ๋ณ๊ฒฝํด์ฃผ์๋ค.
setSearchParams( , { replace: true} );
useEffect
ํ
๋ด, ์์กด์ฑ ๋ฐฐ์ด์ ํ์์๋ ํจ์์ ๋ณ์๋ค์ ์ ๊ฑฐํด์ค์ผ๋ก์จ useEffect
๋ด setSearchParams
ํจ์๊ฐ ๋ง์ด ์คํ๋์ง ์๋๋ก ๋ณ๊ฒฝ์ฃผ์๋ค.