๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

๐Ÿฟ Project15

FE ํ”„๋กœ์ ํŠธ ์‹œ ์„ ํƒํ•˜๋Š” ๊ธฐ์ˆ ์Šคํƒ๋“ค - yarn, emotion, materail UI... ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด, ์ˆ˜๋งŽ์€ ์„ ํƒ์˜ ๊ธฐ๋กœ์— ๋†“์ด๊ฒŒ ๋œ๋‹ค. ๋ฐ”๋กœ.. ๊ธฐ์ˆ ์Šคํƒ๋“ค ์‚ฌ์‹ค ์ผ์ „์—” ํฐ ๊ณ ๋ฏผ์—†์ด ๋งŽ์ด ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒํ•œ ๊ฒƒ๋“ค์ด ์žˆ์—ˆ์ง€๋งŒ, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ๋‚˜์—๊ฒŒ ๋งค์šฐ ํฌ๊ณ  ์†Œ์ค‘ํ•˜๊ธฐ์— ์„ ํƒ์ง€๋“ค์„ ๋น„๊ตํ•ด๋ณด๊ฒ ๋‹ค! 1. Package Manager - npm vs yarn npm (node package Manager) Node.js ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž yarn npm๊ณผ ํฌ๊ฒŒ ์ฐจ์ด๋Š” ์—†์ง€๋งŒ , ๋ฒ„์ „ ์ฐจ์ด๋กœ ์ธํ•œ ๋ฒ„๊ทธ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํŒจํ‚ค์ง€๊ฐ€ ์•ฝ๊ฐ„ ๋” ๊ฐ€๋ฒผ์›€ ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋‹ค ์†๋„์™€ ์•ˆ์ „์„ฑ์ด ๋ฏธ์„ธํ•˜๊ฒŒ ์ข‹์ง€๋งŒ performance ์ฐจ์ด๋Š” ํฌ์ง€ ์•Š๋‹ค. ๋ณ‘๋ ฌ์  ํŒจํ‚ค์ง€ ์„ค์น˜, ๋ฒ„์ „์ฐจ์ด๋กœ ์ธํ•œ ๋ฒ„๊ทธ ๋ฐฉ์ง€ ๊ฐ€๋Šฅ โœ”๏ธ ๋‘˜ ์‚ฌ์ด์— ํฐ ์˜๋ฏธ๊ฐ€ ์—†์ง€๋งŒ ์žฅ์ ์ด ๋” ํ•œ yarn์„ ์•ˆ ์“ธ ์ด์œ ๊ฐ€ ์—†๊ธฐ์— yarn์„ ํƒ 2. Frame Wo.. 2021. 12. 19.
[โ˜•๏ธ๋ธ”๋ž™์ปคํ”ผLv1] TodoList ์ž‘์„ฑ๊ธฐ ์ง€๊ธˆ๊ป html์— ์ง์ ‘ Web ํ™”๋ฉด์„ ๊ตฌ์„ฑํ–ˆ๋‹ค๋ฉด ์ด์ œ ๊ทธ๋งŒ~~ DOM ์— ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ•œ๊ณ„ - DOM์— ์ ‘๊ทผํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ์‹œ์ ์— ๋ช…ํ™•ํ•œ ๊ธฐ์ค€์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— UI ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก DOM ์—…๋ฐ์ดํŠธ ๊ตฌ๊ฐ„ ์ถ”์ ์ด ์–ด๋ ค์›Œ์ง„๋‹ค. - DOM ์— ๋ฟŒ๋ ค์ค„ data๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ผ์ผํžˆ ์ฐพ์•„์„œ ์กฐ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. - ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง€๊ณ  DOM ์ ‘๊ทผ์ด ๋งŽ์•„์ง„๋‹ค. ๋”ฐ๋ผ์„œ Data๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” component์™€ Data๋ฅผ ๋ฟŒ๋ ค์ค„ component๋ฅผ ๋ถ„๋ฆฌ์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ธฐ์กด DOM์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์ปดํฌ๋„ŒํŠธ ํ˜•ํƒœ๋กœ ์ถ”์ƒํ™”ํ•ด๋ณด์ž! ๐Ÿ“Œ ์ปดํฌ๋„ŒํŠธ ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝ ๊ธฐ์กด ์ฝ”๋“œ TODOS ์ด 0 ๊ฐœ ์ „์ฒด๋ณด๊ธฐ ํ•ด์•ผํ•  ์ผ ์™„๋ฃŒํ•œ ์ผ ์œ„์™€ ๊ฐ™์ธ index.html ์€ index.js ์Šคํฌ๋ฆฝํŠธ๋งŒ ์™ ๊ฑธ์–ด๋‘๊ณ .. 2021. 8. 3.
[SidePJ] Issue-Cracker 4๋ถ€ - v0.1.0๐Ÿช ๋ฐ๊ตด๋ฐ๊ตด ๊ตด๋Ÿฌ๊ฐ€๋Š” ์ด์Šˆํฌ๋ž˜์ปค ๐Ÿ“Œ Component ๊ณต์œ ์™€ ์ƒํƒœ๊ด€๋ฆฌ FrontState ์™€ BackEnd State๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ• ๊นŒ? ์ฒ˜์Œ์—๋Š” ๋‹ด๋‹น์ž์™€ ๋ ˆ์ด๋ธ”๋งˆ์ผ์Šคํ†ค ์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ• ๊นŒ ๊ณ ๋ฏผํ–ˆ๋‹ค. 1) ๋ˆŒ๋Ÿฌ์„œ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์— ์ „์†ก 2) FrontState์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์ด์Šˆ ์ž‘์„ฑ์„ ๋ˆ„๋ฅผ ๋•Œ ์ „์†ก GitHub์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์•˜๋Š๋ฐ ๋ˆ„๋ฅด๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ ์ „์†ก์ด ๋˜๋Š”๊ฑด๊ฐ€? ํ–ˆ์ง€๋งŒ ๋กœ์น˜์˜ ๋ง๋กœ๋Š” ์•„ํด๋กœ ์„œ๋ฒ„๊ฐ™์ด ๋™์ž‘ํ•˜๋Š”๊ฒƒ์ด์ง€ ์‹ค์ œ๋กœ ๊ทธ๋Ÿด๋ฆฌ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ ํ–ˆ๋‹ค. ใ…Žใ…Ž ๊ฒฐ๊ณผ์ ์œผ๋กœ 2๋ฒˆ์„ ์„ ํƒ ์ด์Šˆ ์ƒ์„ฑํ•˜๊ธฐ ์ „๊นŒ์ง€ ์ € ์„ธ๊ฐ€์ง€ ์ •๋ณด๋Š” ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์— FrontState๋กœ ๊ด€๋ฆฌํ•˜๋‹ค ์ด์Šˆ ์ž‘์„ฑ ์‹œ ์ „์†กํ•œ๋Š”๊ฒƒ์ด ๊ฒฝ์ œ์ ์ด๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. ์ฒ˜์Œ SideBar๋ฅผ ๋งŒ๋“ค ๋•Œ IssueAdd ์—์„œ ๋™์ž‘ํ•˜๊ฒŒ๋งŒ ๋งŒ๋“ค๋‹ค ๋ณด๋‹ˆ ์ƒํƒœ๊ฐ’์„ ๋‹ค ๊ฐ€์ง€.. 2021. 7. 10.
[SidePJ] ๊นƒํ—ˆ๋ธŒ Issue Cracker 3๋ถ€ - Recoil ์ƒํƒœ๊ด€๋ฆฌ์˜ ์‹œ์ž‘ ๋“œ๋””์–ด ๋งˆ์ง€๋ง‰ ์ฃผ๊ฐ€ ์™”๋‹ค. ์ด๋ฒˆ ๋ฏธ์…˜์˜ ๋งˆ์ง€๋ง‰ ์ฃผ์ด์ž , ์ฝ”๋“œ์Šค์ฟผ๋“œ์˜ ๋งˆ์ง€๋ง‰ ์ฃผ๋‹ค.. 6๊ฐœ์›”๋™์•ˆ ์—ด์‹ฌํžˆ ๋‹ฌ๋ ธ๋Š”๋ฐ ๋์ด ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์•„ ๋„ˆ๋ฌด ์•„์‰ฝ๋‹ค. (๋ฌผ๋ก  ๋‚˜์˜ ์‹ค๋ ฅ์€ ์•„์ง ๊ฐˆ๊ธธ์ด ๋ฉ€๋‹ค) ๊ทธ๋ž˜๋„ ํ™”์ดํŒ…ํ•˜๋ฉฐ ์ด๋ฒˆ์ฃผ ๋ฏธ์…˜ ์ตœ์„ ์„ ๋‹คํ•ด์„œ ๋ผ์ฟค๊ณผ ํ•จ๊ป˜ ๋๋‚ด๋ณผ ๊ฒƒ~!!!!!! ์•„Zใ…~~~~๐Ÿ”ฅ ๐Ÿ“ŒTypeScript์™€ Recoil์„ ํ™œ์šฉํ•œ ๋ชจ๋‹ฌ ์™ธ๋ถ€์˜์—ญ ํด๋ฆญ์‹œ ๋‹ซํž˜ ์ฒ˜๋ฆฌ ์‚ฌ์‹ค airbnb์—์„œ ํ–ˆ์–ด์„œ ๊ฐ„๋‹จํžˆ ๋  ๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๊ธธ์€ ํ—˜๋‚œํ–ˆ๋‹ค. โ– ์›ํ•˜๋Š” ์ƒํ™ฉ +์•„์ด์ฝ˜ click : SideBarDrop ์—ด๋ฆผ ๋ชจ๋‹ฌ ์™ธ ์˜์—ญ click : SideBarDrop ๋‹ซํž˜ โ– ์˜ค๋ฅ˜ ์ƒํ™ฉ Type '{ ref: RefObject; }' is not assignable to type 'IntrinsicAttr.. 2021. 7. 9.
[SidePJ] ๊นƒํ—ˆ๋ธŒ Issue Cracker 2๋ถ€ - Material UI ์™€ style-components์˜ ๋Œ€๊ฒฐ + ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ํ–‰๋ณตํ•œ 2์ฃผ์ฐจ ์‹œ์ž‘ ๐Ÿ“Œ uuid ์‚ฌ์šฉํ•˜๊ธฐ React์— ์œ ์ผํ•œ key ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€ React์—์„œ์˜ ์œ ์ผํ•œ key prop ๊ฐ’์€ ๋ฆฌ์•กํŠธ๊ฐ€ ๋ฆฌ์ŠคํŠธ ์•„์ดํ…œ์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ๊ทธ ์ „์—๋Š” ๋ฐฐ์—ด์˜ key๊ฐ’์— ์ธ๋ฑ์Šค๋ฅผ ๋„ฃ์—ˆ๋Š”๋ฐ, ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0,1,2,3.. ์ด๋ฏ€๋กœ ๊ณ ์œ ํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ฏ€๋กœ React๊ฐ€ ๋ Œ๋”๋ง์„ ์ž˜๋ชปํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ์œ ํ•œ ๊ฐ’์„ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. -> ๋ฐฐ์—ด์— data ์ถ”๊ฐ€ ์ˆ˜์ • ์‹œ ์ „์ฒด ๋ฐฐ์—ด์„ ๋‹ค ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ์ฝ”๋“œ์—์„œ uuid ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด key๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์œ ์ผํ•œ UUID๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ๊ณ  ์ด์ฒ˜๋Ÿผ ์œ ์ผํ•œ ID๋Š” ์ถฉ๋Œํ•  ์—ผ๋ ค๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. uuid ๊ฐ™์€ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ID๋Š” ์œ ์ผํ•˜๊ณ  ์˜ˆ์ธก๊ฐ€๋Šฅํ•ด์ง€๊ณ , ์šฐ๋ฆฌ๋Š” ๊ฐ ์•„์ดํ…œ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ID๋ฅผ ์ƒ์„ฑํ•  ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•  ํ•„์š”๋„.. 2021. 6. 29.
[SidePJ] ๊นƒํ—ˆ๋ธŒ Issue Cracker 1๋ถ€ - ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค! ๋ฒŒ์จ๋ถ€ํ„ฐ ๋์ด ๋„ˆ๋ฌด ์•„์‰ฝ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋„ ๋”๋”๋” ์—ด์‹ฌํžˆ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. Issue Tracker Issue Cracker ๐Ÿช ์‹œ์ž‘! ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” Raccon , pyro, ๋…ธ์„, Neo์™€ ํ•จ๊ป˜ํ•˜๋Š” 5์ธ ๋Œ€๊ฐ€์กฑ!!!!!! ( ๋‹ค๊ฐ™์ด ๋ฐฅ๋„ ๋ชป๋จน์Œ!@ ) ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์ด๊ฒƒ! 1) ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์™€ ์นœํ•ด์ง€๊ธฐ 2) Recoil ์ด๋ž‘๋„ ์นœํ•ด์ง€๊ธฐ 3) ์—๋Ÿฌ์ฒ˜๋ฆฌ์™€ ์ตœ์ ํ™”๊นŒ์ง€ 4) CSS ๊ฐ•๋ฐ•์—์„œ ๋ฒ—์–ด๋‚˜์ž!!!! ( ๊ณผ์—ฐ ๋ ๊นŒ ) ๋‹จ์ˆœํžˆ ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ ํฌ๋ž˜์ปค ์™„์„ฑ์„ ๋„˜์–ด์„œ ๋ฆฌ์ฝ”์ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์งˆ ์˜ˆ์ •์ด๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒซ์ฃผ๋ถ€ํ„ฐ ๋‹ฌ๋ ค์•ผ ํ•˜๋Š”๋ฐ ๋ฉด์ ‘์ด ํ•˜๋‚˜ ์žˆ์–ด์„œ ๋งˆ์Œ์ด ๊ธ‰ํ•˜๊ธด ํ•˜์ง€๋งŒ ์—ด์‹ฌํžˆ ํ•ด๋ด์•ผ์ง€! ๊ฒŒ์‹œ๊ธ€์„ ์“ฐ๋˜ ์ค‘์— ํƒ€์ž…์—๋Ÿฌ์ธ ๊ฒฝ์šฐ๊ฐ€ .. 2021. 6. 29.
[SidePJ] airdnd 3๋ถ€ - ํšŒ๊ณ ์™€ ๋งˆ๋ฌด๋ฆฌ ์ฃผ๋ง๋™์•ˆ ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋ฐ›์€๊ฑธ ๊ณ ์น˜๋ฉฐ ์›”์š”์ผ ํ•œ์ฃผ ์‹œ์ž‘ ! ๐Ÿ“Œ ์—ฐ์†ํด๋ฆญ ๋ฐฉ์ง€ํ•˜๊ธฐ ํ˜„์žฌ airdnd์˜ ๋‹ฌ๋ ฅ ํ™”์‚ดํ‘œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‹ค๋ฅธ ๋‹ฌ๋กœ ๋„˜์–ด๊ฐ€๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฐ์†์œผ๋กœ ํด๋ฆญ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ๊ผฌ์ผ ์ˆ˜ ์žˆ์–ด preventClick์ด๋ผ๋Š” ํ•จ์ˆ˜๋กœ ๋ฐฉ์ง€๋ฅผ ํ•ด๋†“์•˜๋‹ค. ๋ณ€๊ฒฝ ์ „ const preventClick = () => { setTimeout(() => { setDisabled(false); }, 200); const handleClick = () => { if (disabled) return; setDisabled(true); preventClick(); ํด๋ฆญ์„ ๋ˆ„๋ฅด๋ฉด disabled๋ฅผ true๋กœ ๋ฐ”๊ฟ” preventClick์ด ๋‹ค ๋™์ž‘ํ•˜๋Š” 2์ดˆ๋™์•ˆ ํด๋ฆญ์ด ๋ถˆ๊ฐ€ํ–ˆ๋‹ค๊ฐ€ 2์ดˆ ํ›„์—๋Š” disabled = false.. 2021. 6. 6.
[Side PJ] airdnd 2๋ถ€ - ์ƒํƒœ์— ๋”ฐ๋ฅธ CSS ๋ณ€ํ™” (์ƒํƒœ์ง€์˜ฅ State) ์ด๋ฒˆ์—๋Š” ์™œ ์•ˆ์ฐพ์•„์˜ค๋‚˜ ์‹ถ์—ˆ๋˜ ์ƒํƒœ๊ด€๋ฆฌ์˜ ํ˜ผ๋ž€์ด ๋‹ค์‹œ๊ธˆ ์ฐพ์•„์™”๋‹ค.๐Ÿ˜ต ๐Ÿ“Œ ๋‚ ์งœ data state๋ฅผ ์ด์šฉํ•œ CSS ๋ณ€ํ™” โ– ์ƒํ™ฉ ์ฒดํฌ์ธ๊ณผ ์ฒดํฌ์•„์›ƒ ๋œ๋‚ ์งœ์™€ ๊ทธ ์‚ฌ์ด๋ฅผ CSS ๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์บ˜๋ฆฐ๋”๋ฅผ ๋งŒ๋“ค๊ณ  ํด๋ฆญ์„ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น dataset์„ ๋ฐ›์•„ ContextAPI๋กœ ๊ด€๋ฆฌํ•˜๋Š” CheckIn, CheckOut ์— ๋ฐ˜์˜์‹œ์ผฐ๋‹ค. click ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๊ทธ ๊ฐ€๋Šฅ์„ฑ์„ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๋น„๊ตํ•˜์—ฌ CheckIn, CheckOut ์— ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ dataํ๋ฆ„์„ ์งฐ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ํด๋ฆญ๋œ ๋‚ ์งœ์˜ ์ƒํƒœ๊ด€๋ฆฌ๋‹ค. CheckIn, CheckOut data๋Š” ์ „์—ญ๊ด€๋ฆฌ๊ฐ€ ๋˜๊ณ  ์žˆ๋Š”๋ฐ clickedData๋Š” click์ด๋ฒคํŠธ (handleTdBtnClick )์•ˆ์—์„œ๋งŒ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— rendering์‹œ์— ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜.. 2021. 6. 5.
[SidePJ] React ๋ชจ๋‹ฌ ์˜์—ญ ๋ฐ– ํด๋ฆญ์‹œ ๋‹ซ๊ธฐ ๐Ÿ“Œ ์ „์ฒด ๊ตฌ์กฐ PayModalWrapper ๊ฐ€ RoomPayModal์„ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ์ƒํƒœ ๋™์ž‘ : ์ˆ™์†Œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋‹ฌ์ฐฝ์ด ๋œจ๊ณ  ๋ชจ๋‹ฌ์ฐฝ ์™ธ์˜ ์˜์—ญ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ์ฐฝ์ด ๋‹ซํžŒ๋‹ค. ๐Ÿ“Œ ์ฝ”๋“œ handlePayModalOff ํ•จ์ˆ˜๋กœ ๋ชจ๋‹ฌ ์™ธ ์˜์—ญ ํด๋ฆญ ์‹œ ๋‹ซํžˆ๋Š” ํด๋ฆญ์ด๋ฒคํŠธ๋ฅผ ์ œ์–ดํ•  ์˜ˆ์ • return ๋ถ€๋ถ„ return ( {isPayModalClicked && ( handlePayModalOff(e)} > )} ); handlePayModalOff const ReservationMain = () => { const [isPayModalClicked, setIsPayModalClicked] = useState(false); const handlePayModalOff = (e) => { const clicked = e.t.. 2021. 6. 3.
๋ฐ˜์‘ํ˜•