React

[Bottom Sheet - 2] ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ

presentKey 2023. 5. 11. 04:07

๐Ÿงท ์ด์ „ ํฌ์ŠคํŠธ

 

๐Ÿšฉ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ

๊ฒฐ๊ณผ๋ฌผ

๐Ÿšฉ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ

Header์™€ Body ๋ถ€๋ถ„์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ƒ๊ฐ

  • ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ํ™”๋ฉด ๊ตฌํ˜„

์ด๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ณต๋ถ€๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ด์ „ ๊ฒŒ์‹œ๊ธ€์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

     - ์ถ”์ƒํ™”๊ฐ€ ์ž˜๋ชป ๋˜์–ด ๋ฐœ์ƒํ•œ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ์™€ ๋กœ์ง๋“ค ๊ทธ๋ฆฌ๊ณ  ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ props...

     - button ์˜์—ญ๊ณผ form ์˜์—ญ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š”์ 

     - ์ž…์ถœ๊ธˆ form์˜ ๊ฒฝ์šฐ input value๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š”์ 

 

Main ์ปดํฌ๋„ŒํŠธ์—์„œ BottomSheet
Detail ์ปดํฌ๋„ŒํŠธ์—์„œ BottomSheet


๐Ÿšฉ BottomSheet ์ปดํฌ๋„ŒํŠธ

BottomSheet ์ปดํฌ๋„ŒํŠธ

2~ 15๋ฒˆ์งธ ์ค„์€ BottomSheet ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ ๋ธŒ๋ผ์šฐ์ € resize ์ด๋ฒคํŠธ์— ๊ด€ํ•œ ๋กœ์ง์ž…๋‹ˆ๋‹ค.

resize ์ด๋ฒคํŠธ์— throttle์„ ์ ์šฉํ•ด 700ms๋งˆ๋‹ค ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

BottomSheetContext

BottomSheetContext๋Š” ์–ด๋–ค Form์ด ๋ Œ๋”๋ง ๋˜๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” toggle ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿšฉ Recoil ์‚ฌ์šฉ

์ฒ˜์Œ์—๋Š” Context์•ˆ์˜ height ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  Body ๋ถ€๋ถ„์˜ ๋†’์ด๋ฅผ ๊ณ„์‚ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. Context๋ฅผ ํ†ตํ•ด height ์ƒํƒœ๋ฅผ ๊ณต์œ ๋ฐ›์œผ๋‹ˆ ๋ฌธ์ œ์ ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

 

1. useEffect๋ฅผ ์ด์šฉํ•ด toggle ์ƒํƒœ๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค height์˜ ์ƒํƒœ ์—…๋ฐ์ดํŠธ

2. ๋ฒ„ํŠผ์ด ๊บผ์งˆ๋•Œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ 1๋ฒˆ, ๋ฒ„ํŠผ์ด ์ผœ์งˆ๋•Œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ 1๋ฒˆ -> ์ด 2๋ฒˆ์˜ ์ƒํƒœ ๋ณ€ํ™” ๋ฐœ์ƒ

3. ๋ถ€์ž์—ฐ์Šค๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐœ์ƒ

 

Context์—์„œ height ์ƒํƒœ๋ฅผ ๊ฐ€์กŒ์„ ๋•Œ

Recoil์„ ํ†ตํ•ด height ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ๋”ฑ 1๋ฒˆ์˜ ์ƒํƒœ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


Header ์ปดํฌ๋„ŒํŠธ

children์œผ๋กœ button์„ ์กฐํ•ฉํ•˜์—ฌ ๊ฐ ํŽ˜์ด์ง€์— ๋งž๋Š” button์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

Body ์ปดํฌ๋„ŒํŠธ

toggle ์ƒํƒœ์—๋”ฐ๋ผ Body์˜ height ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

children์œผ๋กœ ๊ฐ ํŽ˜์ด์ง€์— ๋งž๋Š” Form์„ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

Form ์ปดํฌ๋„ŒํŠธ

ClassCreateForm
ClassAttendForm
TransferForm