728x90
โจ React ์์ Key๋?
์๋ฆฌ๋จผํธ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค ๋ ํฌํจํด์ผ ํ๋ ํน์ํ ๋ฌธ์์ด ์ดํธ๋ฆฌ๋ทฐํธ์ด๋ค.
React๊ฐ ์ด๋ค ํญ๋ชฉ์ ๋ณ๊ฒฝ, ์ถ๊ฐ ๋๋ ์ญ์ ํ ์ง ์๋ณํ๋ ๊ฒ์ ๋๋๋ค.
function NumberList(props) {
return (
<ul className="test">
<li key='1'>1</ul>
<li key='2'>2</ul>
<li key='3'>3</ul>
</ul>
)
}
Key ์ ํน์ง์?
๊ณ ์ ํ ๊ฐ์ด์ด์ผ ํ๋ฉฐ, ํ์ ๋ ธ๋์ธ ๋ค๋ฅธ ์์ดํ ๊ณผ์ ์ค๋ณต๋ ํค ๊ฐ์ ํ์ฉ๋์ง ์๋๋ค.
๋ํ, ์ปดํฌ๋ํธ์ ๊ตฌ์ฑ์์๋ก ์ ๋ฌ๋์ง ์๋๋ค. (๋ฐ๋ผ์ props ์ key ๊ฐ ํฌํจ๋์๋ค ํด๋ props.key ๋ก ์ฌ์ฉ ๋ถ๊ฐํ๋ค)
์ฃผ์ํ ์
์ปดํฌ๋ํธ ํ๋๋ฅผ ์ฌ๋ฌ ์ฐจ๋ก ๋ฐ๋ณตํด์ ๋์ดํ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ ์์ฒด๊ฐ ํ๋์ list ๊ฐ ๋๋ค.
์ด ๊ฒฝ์ฐ, ์ปดํฌ๋ํธ ์์ฒด์ key ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํ๋ค.
function ListItem(props) {
// ๋ง์ต๋๋ค! ์ฌ๊ธฐ์๋ key๋ฅผ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.
return <li>{props.value}</li>;
}
function NumberList(props) {
const numbers = props.numbers;
const listItems = numbers.map((number) => {
// ๋ง์ต๋๋ค! ๋ฐฐ์ด ์์ key๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
return <ListItem key={number.toString()} value={number} />
});
return (
<ul>
{listItems}
</ul>
);
}
const numbers = [1, 2, 3, 4, 5];
ReactDOM.render(
<NumberList numbers={numbers} />,
document.getElementById('root')
);
์ฐธ๊ณ ์๋ฃ
'๐ป DEV > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React ์ ์๋ช ์ฃผ๊ธฐ(Life Cycle) ๋? (0) | 2021.05.27 |
---|---|
[React] React ์์ ์ด๋ฏธ์ง(Image) ์ฒจ๋ถํ๊ธฐ (0) | 2021.05.09 |
[React] React ์ ์ํ (State) ์ ์ดํํธ ํ (Effect Hook) (0) | 2021.05.09 |
[React] React.Fragment ๋? (0) | 2021.05.09 |
๋๊ธ