๐Ÿšค ์„ฑ์žฅ์ผ์ง€ 6.0

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒพ (4.0)ํ•™์Šต ํ‚ค์›Œ๋“œ์—์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •๋ณด ์ œ๊ณต, ๊ณ ๋ฏผ์—์„œ ๋‚ด ๊ฒฝํ—˜์„ ์ž์„ธํžˆ ์ ์ž!
๐ŸฅŠ (5.0)ํ•™์Šต ํ‚ค์›Œ๋“œ๋Š” ํ•œ์ค„์˜ ํ•ต์‹ฌ์œผ๋กœ๋งŒ ์ •๋ฆฌ, ์„ฑ๊ณต/์‹คํŒจ ์ผ์ง€ ์ž‘์„ฑํ•˜๊ธฐ! ์ด ๋•Œ, ์‹คํŒจ์˜ ๊ฒฝํ—˜์€ ์ž์„ธํžˆ ์ ๊ธฐ!
๐Ÿ‰ (6.0)<์™„์ „ ๊ฐœํŽธ!!!> ๋งค์ผ ์Šต๊ด€์ ์œผ๋กœ ํ•ต์‹ฌ๋งŒ ์ ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ”„๋ ˆ์ž„ ๋ณ€๊ฒฝ. ์„ฑ๊ณต๋ณด๋‹จ ์‹คํŒจ์— ์ดˆ์ ์„ ๋งž์ถ”๊ธฐ.

  • ๐Ÿ‰ (6.1)<์ˆ˜์ •> ๋งค๋ฒˆ ์„ฑ๊ณต, ์‹คํŒจ๋ฅผ ๋”ฐ๋กœ ์ ๋Š” ๊ฒƒ๋ณด๋‹จ ๊ฒฝํ—˜์œผ๋กœ ํ‘œํ˜„ํ•˜์ž

๐ŸŒˆ ์˜ค๋Š˜์˜ ๊ฐ์ •

๋ญ”๊ฐ€ ๋งŽ์ด ํ•œ ๊ฒƒ ๊ฐ™์œผ๋ฉด์„œ๋„ ์ ๊ฒŒ ํ•œ ๊ธฐ๋ถ„..? ๋‹คํ–‰ํžˆ ์˜ค๋Š˜ ํ•  ์ผ์„ ์ฒดํฌํ•œ ๊ธฐ๋ก์ด ์žˆ์–ด์„œ ์ž๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿซง ์˜ค๋Š˜์˜ ๊ณ ๋ฏผ

๊ธฐ์กด confirm api ๋Œ€์‹  modal component๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ๋‹ค. ์ผ๋‹จ ๊ตฌํ˜„์€ ํ–ˆ๋Š”๋ฐ, state๋ฅผ handleํ•˜๋Š” ๋ถ€๋ถ„์„ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผ์ด๋‹ค. handle ํ•จ์ˆ˜์— ํŠน์ • townId๋ฅผ ์ „๋‹ฌํ•ด์„œ ์–ด๋–ค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š”๋ฐ, modal component๋ฅผ ReactDOM์˜ portal๋กœ ๊ตฌํ˜„์„ ํ•ด๋‘ฌ์„œ ์ „๋‹ฌํ•  ๋ฐฉ๋ฒ•์ด ๋– ์˜ค๋ฅด์ง€ ์•Š๋Š”๋‹ค. ์–ด..? ๊ทผ๋ฐ ์ง€๊ธˆ ๊ธ€์„ ์“ฐ๋ฉด์„œ ์™ ์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ ๊ฒƒ๋„ ๊ฐ™๋‹ค. ์–ด์ฐจํ”ผ portal์„ ์ด์šฉํ•ด์„œ ๋ Œ๋”๋ง ๋˜๋Š” ๊ฑด #modal-root๋‹ˆ๊นŒ townId๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์— portal์„ ์œ„์น˜์‹œํ‚ค๋ฉด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ..?!

โ˜€๏ธ ์˜ค๋Š˜์˜ ๊ฒฝํ—˜

ReactDOM.createPortal

์ฒ˜์Œ์—” ๊ตณ์ด ์ด๊ฑธ ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฑฐ์ง€..? ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ—Œ๋ฐ portal์„ ์‚ฌ์šฉํ•˜๋ฉด modal๊ณผ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ด๊ฒŒ ์™œ ์žฅ์ ์ด๋ƒ๋ฉด ์‹ค์ œ portal ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์—์„œ props๋Š” ์ „๋‹ฌ๋ฐ›์œผ๋ฉด์„œ ๋ Œ๋”๋ง๋˜๋Š” ์œ„์น˜๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋ถ€๋ชจ์˜ position์ด๋‚˜ z-index๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋˜, modal์ด๋‚˜ dim ์ปดํฌ๋„ŒํŠธ๊ฐ™์€ ๊ฒฝ์šฐ ์–ด๋–ค ํŠน์ • page๋‚˜ component์—์„œ ๋ Œ๋”๋ง๋˜๊ธฐ๋ณด๋‹ค #root์™€ ๋Œ€๋“ฑํ•œ ์œ„์น˜(?)์—์„œ ๋ Œ๋”๋ง๋˜๋Š” ๊ฒŒ ์˜๋ฏธ์ ์œผ๋กœ ๋งž๊ธฐ ๋•Œ๋ฌธ์— portal์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Redux

์‚ฌ์‹ค ๋ฆฌ๋•์Šค ์ž์ฒด๋ฅผ ๋ฐฐ์šฐ๋ ค๊ณ  ํ•˜์ง„ ์•Š์•˜๋Š”๋ฐ, ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‹œ์ดˆ์ด๊ธฐ๋„ ํ•˜๊ณ  React๊ฐ€ ๋ฐœํ‘œํ•œ Flux ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ตฌํ˜„์ฒด๋ผ๋Š” ์ ์—์„œ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. Redux์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ 3์›์น™์€ ๋ฐ˜๋“œ์‹œ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์ž.

  1. ์ง„์‹ค๋œ ์ƒํƒœ์˜ ์›์ฒœ์€ ์˜ค์ง ํ•˜๋‚˜์—ฌ์•ผํ•œ๋‹ค.
  2. ์ƒํƒœ๋Š” ์˜ค๋กœ์ง€ ์ฝ๊ธฐ ์ „์šฉ์ด์–ด์•ผ ํ•œ๋‹ค.
  3. ์ƒํƒœ ๋ณ€ํ™”๋Š” ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋ค„์ ธ์•ผ ํ•œ๋‹ค.

๐Ÿพ ์˜ค๋Š˜์˜ ๊ตํ›ˆ

๋ชฐ์ž…ํ•˜์ž. ๋‚˜๋Š” ์ถฉ๋ถ„ํžˆ ๋ชฐ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค! ๋ชฐ์ž…์ด ์ž˜ ์•ˆ๋  ๋•Œ๋Š” ์ƒ๊ฐํ•ด๋ณด์ž. ์˜ค๋Š˜ ๋‚ด๊ฐ€ ์ฃฝ๋Š”๋‹ค๋ฉด ๊ทธ๋ƒฅ ์นจ๋Œ€์— ๋ˆ„์›Œ ์žˆ์„ ๊ฒƒ์ธ์ง€ ์กฐ๊ธˆ์ด๋ผ๋„ ๋ญ”๊ฐ€๋ฅผ ํ•˜๋ ค๊ณ  ํ•  ๊ฒƒ์ธ์ง€

๐Ÿชต ์ฐธ๊ณ