React: ์•„์ด๋””์–ด : jsx ๊ตฌ๋ฌธ์—์„œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์†์„ฑ ๊ฐ’ ๋‹จ์ถ• ์ง€์›

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

์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{this.state.list.map((item, key) => <MyComponent {item, key} />)}

๋‹น์‹ ์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ• ๊นŒ์š”?

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

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

cc @sebmarkbage

์šฐ๋ฆฌ๋Š” https://github.com/facebook/jsx ์—์„œ ๊ตฌ๋ฌธ ํ† ๋ก ์„ ๊ณ„์†ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์–ธ์–ด์— ์ถ”๊ฐ€ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋„๋ก ์ด ๊ตฌ๋ฌธ์— ๊ธฐ์—ฌํ•˜๋Š” ๋” ๋„“์€ ๊ทธ๋ฃน์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<Foo {item} /> , <Foo {...item} /> , <Foo item /> ์˜ ์ฐจ์ด๊ฐ€ ๋„ˆ๋ฌด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ๋Š” ์ด๋ฏธ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ์‹์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๊ฐ•ํ•˜๊ฒŒ ๋Š๋ผ๋ฉด https://github.com/facebook/jsx ์—์„œ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/facebook/jsx/pull/118

^ ์—ฌ๊ธฐ์— ๋…ผ์˜๋œ ๋Œ€๋กœ ๊ฐ์ฒด ํ‘œํ˜„ ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์ œ์•ˆ.

์˜ ์ฐจ์ด์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค , ๊ทธ๋ฆฌ๊ณ  ๋„ˆ๋ฌด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ผ๋ž€์€ ์ƒ๋Œ€์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <Foo item /> ๋Š” ํ•ญ์ƒ {item: true}๋กœ ํ‰๊ฐ€๋˜๋ฏ€๋กœ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ์ด์ผœ๋ณด๋ฉด ๋งค์šฐ ์ œํ•œ์ ์ด๋ผ๊ณ  ๋Š๊ปด์ง€์ง€๋งŒ html ์œ ์ „์ž์˜ ๋™์ž‘์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋ณ„๋กœ ์“ธ๋ชจ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ES8 ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ• ๊ด€์ ์—์„œ ๋ณด๋ฉด ํ˜ผ๋™๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. {item} ๋Š” {item: item} ์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค. {...item} ๋Š” ํ‰๋ฉดํ™”/์–•์€ ๋ณต์‚ฌ/์ƒˆ ๊ฐœ์ฒด๋กœ ํ™•์‚ฐ์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ jsx๊ฐ€ h(name: string | Component, props: {[name]: any}, ...children) ๋กœ ๋ณ€ํ™˜๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋ฉด. ObjectExpression์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋น ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

<Foo {x} /> ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ <Foo {...x} /> ๋Š” ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€
<Foo {...{x}} /> ํ›จ์”ฌ ๋” ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

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