๋ฐฐ์ด์ ๋ฐ์์ ์ถ๋ ฅํ๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑ ํ ์คํํ๋ฉด key ๊ฐ์ด ํ์ํ๋ค๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋๋ค. ์ฌ๊ธฐ ๋งํ๋ key๋ ๋ฌด์์ผ๊น?
Key๋ React๊ฐ ์ด๋ค ํญ๋ชฉ์ ๋ณ๊ฒฝ, ์ถ๊ฐ ๋๋ ์ญ์ ํ ์ง ์๋ณํ๋ ๊ฒ์ ๋์ต๋๋ค. key๋ ์๋ฆฌ๋จผํธ์ ์์ ์ ์ธ ๊ณ ์ ์ฑ์ ๋ถ์ฌํ๊ธฐ ์ํด ๋ฐฐ์ด ๋ด๋ถ์ ์๋ฆฌ๋จผํธ์ ์ง์ ํด์ผ ํฉ๋๋ค.
๋ผ๊ณ ๋ฆฌ์กํธ ๊ณต์๋ฌธ์์ ์ ํ์๋ค.
๋ฆฌ์กํธ๋ state์์ ๋ณ๊ฒฝ์ฌํญ์ด ์๋ ๋ถ๋ถ๋ง ์บ์นํด์ ๋ ๋๋ง ํด์ค๋ค
์ด๋ ๊ฒ ๋๋ฉด ๋ณ๊ฒฝ๋์ง ์๋ ๋ฐ์ดํฐ๋ค์ ๋ํด์ ์
๋ฐ์ดํธ๋ฅผ ํ์ง ์์ ํจ์จ์ ์ผ๋ก ์๋์ํฌ ์ ์๋ค.
๊ทธ๋ฌ๋ฉด ๋ฆฌ์กํธ๋ ๋ฐฐ์ด ์ ์ฒด๋ฅผ ๋ค์ ๋ ๋๋ง ํ ๊น or ์ถ๊ฐ๋ ์์๋ง ๋ค์ ๋ ๋๋ง ํ ๊น ๋ฆฌ์กํผ๋ ์ถ๊ฐ๋ ์์๋ง ๋ ๋๋ง ํด์ค๋ค. ๊ทธ๊ฑธ ๊ตฌ๋ณํ๊ธฐ ์ํด์ ํ์ํ ๊ฒ ๋ฐ๋ก key์ด๋ค
{this.props.list.map((el, id) => {
return (
<div key={id} className="comment">
<div>
<strong>code_bootcamp</strong>
<Comment value={el} />
</div>
<div>
<i className="fas fa-times" id="commentOut" />
<i className="far fa-heart" />
</div>
</div>
);
})}
์ ๋ฒ์ ๋ง๋ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ์ธ์คํ๊ทธ๋จ์ ๋ฆฌ์กํธ๋ก ๋ณํ์ํค๋ฉด์
ํผ๋์ ๋๊ธ ๋ฆฌ์คํธ๋ฅผ map()๋ก ๊ตฌํํ๋ค.
์ฒ์์ ๋ง๋ค ๋ ๊ณต์ ๋ฌธ์์ ์ตํ์ ์๋จ์ผ๋ก index ๊ฐ์ ์ค๋ ๋๋ค๊ณ ??
ํ๋ฉด์ ๊ทธ๋ฅ index๋ฅผ ๋ถ์ฌํ๋๋ฐ ์ถ๊ฐํ ๋๋ ๋น์ฐํ ๋ฌธ์ ๋ ์๋ค.
๋ฐ๋ก ๋๊ธ ์ญ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๋ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค. ๊ทธ๋์ ์ฐพ์๋ณด๋
์ฒ์, ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ๋ฅผ ํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๋ค.
toString()๊ณผ ๊ฐ์ด ๋ฌธ์์ด๋ก ํค๊ฐ์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ
๋๋ถ๋ถ Data์ ๊ฐ์ฒด์์ .id ๋ก ์ถ์ถํ์ฌ ์ฌ์ฉํ๋ค.
this.state = {
commentCounter: 0,
}
const addComment = () => ({
id: this.state.commentCounter++,
์ด๋ฐ ์์ผ๋ก addComment ํธ์ถํ ๋๋ง๋ค ์นด์ดํธ๊ฐ 1์ฉ ์ฆ๊ฐํ์ฌ ๊ณ ์ ํ ํค๊ฐ์ ์ค ์๋ ์๋ค.
์ฐธ๊ณ ์ฌ์ดํธhttps://wooooooak.github.io/frontend/2019/01/30/%EB%A6%AC%EC%95%A1%ED%8A%B8%EB%B0%B0%EC%97%B4%EB%B3%80%EA%B2%BD/
https://ko.reactjs.org/docs/lists-and-keys.html