์์ด๋์ด๋ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
{this.state.list.map((item, key) => <MyComponent {item, key} />)}
๋น์ ์ ๊ทธ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ ๊น์?
๋๋ ์๋์ค๋ผ๊ณ ๋งํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์ํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ๋ง์ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๊ณ ๊ฐ๋ฅํ ํ ์ต์ํํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. {...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 ์ ์ ์์ ๋์์ ์ดํดํ ์ ์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋ณ๋ก ์ธ๋ชจ๊ฐ ์์์ต๋๋ค.
{item}
๋ {item: item}
์ ์ฝ์ด์
๋๋ค. {...item}
๋ ํ๋ฉดํ/์์ ๋ณต์ฌ/์ ๊ฐ์ฒด๋ก ํ์ฐ์ ์ฝ์ด์
๋๋ค.
๋๊ตฐ๊ฐ jsx๊ฐ h(name: string | Component, props: {[name]: any}, ...children)
๋ก ๋ณํ๋๋ค๋ ๊ฒ์ ์ดํดํ๋ฉด. ObjectExpression์ ์์ฐ์ค๋ฝ๊ฒ ๋น ์ง๊ฒ ๋ฉ๋๋ค.
<Foo {x} />
๋ ์ง์ํ์ง ์์ง๋ง <Foo {...x} />
๋ ์ง์ํ๋ ๊ฒ์ด ํผ๋์ค๋ฝ์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์
<Foo {...{x}} />
ํจ์ฌ ๋ ํผ๋์ค๋ฝ์ต๋๋ค.