๐Ÿ› ๏ธ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ์ถ”๊ฐ€ ํ›„ ๋’ค๋กœ๊ฐ€๊ธฐ๊ฐ€ ์•ˆ๋˜๋Š” ๋ฌธ์ œ

๋ฐ•๋ฏผ์šฐยท2023๋…„ 10์›” 5์ผ
0

๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

๋ชฉ๋ก ๋ณด๊ธฐ
2/2

๐Ÿ“Œ ๋ฌธ์ œ ์ƒํ™ฉ

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๋กœ ๋‹ค์‹œ ๋ณด๋‚ด์ค„ ๋•Œ๋„ ์žˆ์–ด์„œ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ์•„๋ฌด๋ฆฌ ๋ˆŒ๋Ÿฌ๋„ ์›ํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š์„ ๋•Œ๋„ ์žˆ์—ˆ๋‹ค.


๐Ÿ“Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. useEffect ๋‚ด์˜ setSearchParams ํ•จ์ˆ˜์— replace ์˜ต์…˜์„ ์ฃผ์–ด url์˜ history์— ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์ž‘๋“ค์ด ์Œ“์ด์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค.

    setSearchParams( , { replace: true} );
  2. useEffect ํ›… ๋‚ด, ์˜์กด์„ฑ ๋ฐฐ์—ด์— ํ•„์š”์—†๋Š” ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜๋“ค์„ ์ œ๊ฑฐํ•ด์คŒ์œผ๋กœ์จ useEffect ๋‚ด setSearchParams ํ•จ์ˆ˜๊ฐ€ ๋งŽ์ด ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ์ฃผ์—ˆ๋‹ค.

profile
๊พธ์ค€ํžˆ, ๊นŠ๊ฒŒ

0๊ฐœ์˜ ๋Œ“๊ธ€