React: ๋ž˜ํ•‘ ์š”์†Œ ์—†์ด ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ์š”์†Œ ๋ Œ๋”๋ง

์— ๋งŒ๋“  2015๋…„ 03์›” 15์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/react

์ค‘๋ณต ๋ฌธ์ œ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ๋งŒ https://groups.google.com/forum/#!searchin/reactjs/render $20multiple/reactjs/pHNJe8trFOg/J-zd4jxAkJ4J

์œ ํšจํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํ† ๋ฆฌํ…”๋ง์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ตฌ์ถ• ์ค‘์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ ˆ์ด์•„์›ƒ ์—”์ง„์„ ์ž‘์„ฑํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ œ์–ดํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ชจ๋“  ๋‹จ์ผ ์š”์†Œ๋Š” ๊ณ ์ •๋œ ์œ„์น˜์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ๋‚ด ์—”ํŠธ๋ฆฌ ๋ ˆ๋ฒจ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<Story>
    <Grid />
    <UI />
</Story>

<Grid> ๋Š” ์ด์•ผ๊ธฐ์˜ ๋ชจ๋“  ์‹ค์ œ ํ•ญ๋ชฉ( <GridItem> )(ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋“ฑ)์„ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. <UI /> ๋Š” ๋ชจ๋“  ์Šคํ† ๋ฆฌ์— ๊ณตํ†ต์ ์ธ UI ์š”์†Œ๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ค๋””์˜ค/๋น„๋””์˜ค ํ•ญ๋ชฉ์˜ ๋ณผ๋ฅจ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ <VolumeControl> ์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ ์ฃผ์–ด์ง„ ๊ตฌ์กฐ๋ฅผ ๋ Œ๋”๋งํ•˜๋ฉด ์ด๊ฒƒ์ด ๊ฒฐ๊ณผ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

<div>
    <div>
        <!--list of GridItems-->
    </div>
    <div>
        <!--list of UI components-->
    </div>
</div>

๋ชจ๋“  ๊ฒƒ์ด ๊ณ ์ •๋œ ์œ„์น˜์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UI ๋ ˆ์ด์–ด๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ฎ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค(์˜ˆ: ๋น„๋””์˜ค๋ฅผ ํด๋ฆญํ•  ์ˆ˜ ์—†์Œ). ๊ทธ๋ž˜์„œ ํ˜„์žฌ Story ์˜ render ๋ฉ”์„œ๋“œ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<div>
    <Grid />
    <VolumeControl />
    <Navigation />
    <ShareButtons />
</div>

์ด๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ถ„๋ฆฌ๋ฅผ ์žƒ์„ ๋•Œ ์ถ”์•…ํ•ฉ๋‹ˆ๋‹ค. Story ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ชจ๋“  UI ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ฑ. ๋ž˜ํผ ์š”์†Œ ์—†์ด ์ž์‹์„ ๋ Œ๋”๋งํ•˜๋Š” ๊ฐ€์ƒ <Fragment> ๊ตฌ์„ฑ ์š”์†Œ์ฒ˜๋Ÿผ <UI> ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋“œ๋ฌธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ๋‚ด๊ฐ€ ๋งŒ์ง€๋Š” ๋ชจ๋“  ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ฐ€์žฅ์ž๋ฆฌ ์‚ฌ๋ก€์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ ๋‹ค์†Œ ์žฌ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ์ ์–ด๋‘๋Š” ๊ฒƒ์ด ๋•Œ๋•Œ๋กœ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๋‹น์‹ ์˜ ๋‘๋‡Œ๊ฐ€ ์œ ์šฉํ•œ ์ผ์„ ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  visiblity:none UI ๊ณ„์ธต์—์™€ visibility:visible UI ์ปดํฌ๋„ŒํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ํ•ดํ‚น, ๊ทธ ์ด์ƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

#2127์˜ ๋ณต์ œํ’ˆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

#2127์˜ ๋ณต์ œํ’ˆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ „์ ์œผ๋กœ. ๋‚˜๋Š” ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค (๋ช‡ ์ฃผ ์ „์— ์ฐพ์•˜์Šต๋‹ˆ๋‹ค). ์ด๊ฒƒ์„ ๋‹ซ์œผ๋ฉด ๋‹ค๋ฅธ ๋ฌธ์ œ์—์„œ๋„ ๋ช…์‹œ์ ์œผ๋กœ ๋งํฌํ•˜์—ฌ ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Prinzhorn ์ด ๋ฌธ์ œ๋ฅผ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌ height ๋‘˜๋Ÿฌ์‹ธ๋Š” div ๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  overflow:visible ์ถ”๊ฐ€ ๊ทธ๋“ค์—๊ฒŒ div ๋‘˜๋Ÿฌ์‹ธ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
ํŽธ์ง‘ : ์•„๋งˆ๋„ UI-div์— ๋Œ€ํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰