๋๋ ์ด๋๊น์ง map์ ์ฌ์ฉํด์ ๋ฆฌ์คํธ๋ฅผ ๋๋๋ง ํ ๋
๋ณดํต ๋ฐ์ดํฐ์ ์ด๋ฏธ ๊ณ ์ ํ ID๊ฐ ์๋ค๋ฉด ๊ทธ ID๋ฅผ ์ฌ์ฉํ์ง๋ง ์๋ ๊ฒฝ์ฐ์๋ index๋ฅผ ๋ฃ๋ ๊ฒฝ์ฐ๊ฐ ์์๋๋ฐ
์ด๋ ๊ถ์ฅํ์ง ์๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ๋ค.
key์ index ๊ฐ์ ๋ฃ์ง ์๋ ๊ฒ์ด ๊ถ์ฅ๋๋ ์ด์ ๋
๋ฆฌ์คํธ ํญ๋ชฉ์ ์์๋ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋ ๋ ์์์น ๋ชปํ ๋ ๋๋ง ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
1. ํญ๋ชฉ ์์ ๋ณ๊ฒฝ ์ ๋ฌธ์
๋ฆฌ์คํธ ํญ๋ชฉ์ ์์๊ฐ ๋ฐ๋๋ฉด, index ๊ฐ์ ๊ทธ๋๋ก ์ ์ง๋๊ธฐ ๋๋ฌธ์ ๋ฆฌ์กํธ๋ ํญ๋ชฉ ์์ฒด๊ฐ ๋ณ๊ฒฝ๋์์์ ์ธ์ํ์ง ๋ชปํ๋ค.
์ด๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ถํ์ํ๊ฑฐ๋ ์๋ชป๋ ๋ ๋๋ง์ ์ ๋ฐํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ํญ๋ชฉ์ด ์ฝ์ ๋๊ฑฐ๋ ์ญ์ ๋ ๋, ๊ฐ ํญ๋ชฉ์ key๊ฐ ์ฌ์ ํ ๊ฐ์ index ๊ฐ์ ๊ฐ์ง๋ฉด ๋ฆฌ์กํธ๋ ํญ๋ชฉ์ด ๊ทธ๋๋ก ์๋ค๊ณ ์๋ชป ํ๋จํ ์ ์๋ค.
์์:
const fruits = ['Apple', 'Banana', 'Cherry'];โ
์ฌ๊ธฐ์ ํญ๋ชฉ์ด 'Apple', 'Banana', 'Cherry' ์์ผ๋ก ์์ ๋, key๋ก index๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ:
fruits.map((fruit, index) => <li key={index}>{fruit}</li>);โ
๋ง์ฝ 'Apple'์ด ์ญ์ ๋๋ฉด ๋๋จธ์ง 'Banana'์ 'Cherry'๋ ์ฌ์ ํ ๊ฐ๊ฐ 1๋ฒ๊ณผ 2๋ฒ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๋ฆฌ์กํธ๋ ํญ๋ชฉ์ด ๋ณ๊ฒฝ๋์ง ์์๋ค๊ณ ์ธ์ํ๊ณ ๋ถํ์ํ๊ฒ ์ด์ ๋ด์ฉ์ ๊ทธ๋๋ก ์ฌ์ฌ์ฉํ๊ฑฐ๋ ์๋ฑํ ์์น์ ์๋ชป๋ ๋ด์ฉ์ ๋ ๋๋งํ ์ ์์ต๋๋ค.
2. ์ฑ๋ฅ ๋ฌธ์
index๋ฅผ key๋ก ์ฌ์ฉํ๋ฉด ํญ๋ชฉ์ด ์ถ๊ฐ, ์ญ์ , ์ฌ์ ๋ ฌ๋ ๋๋ง๋ค ๋ฆฌ์กํธ๋ ๋ชจ๋ ํญ๋ชฉ์ ๋ค์ ๋ ๋๋งํ ์ ์๋ค.
์ด๋ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ผ๋ฉฐ, ํนํ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์ฌํ๋๋ค.
๊ณ ์ ํ key๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ฆฌ์กํธ๋ ๋ฐ๋ ํญ๋ชฉ๋ง ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๋ค.
3. ์ฌ์ฉ์ ์ธํฐ๋์ ๋ฌธ์
๋ฆฌ์คํธ ๋ด์์ ํผ ์์๋ ์ํ๋ฅผ ๊ฐ์ง ์ปดํฌ๋ํธ๊ฐ ์์ ๋, index๋ฅผ key๋ก ์ฌ์ฉํ๋ฉด ์ํ๊ฐ ์๋ชป๋ ํญ๋ชฉ์ ํ ๋น๋ ์ ์๋ค.
๋ฆฌ์กํธ๋ key๋ฅผ ๊ธฐ์ค์ผ๋ก ์ปดํฌ๋ํธ ์ํ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ, index๋ฅผ ์ฌ์ฉํ๋ฉด ํญ๋ชฉ์ ์์๊ฐ ๋ฐ๋ ๋ ์ํ๊ฐ ์๋ฑํ ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๊ฒฐ๋ก
๊ณ ์ ํ ID ๋๋ shortid์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ๋ฆฌ์คํธ ํญ๋ชฉ์ ๊ณ ์ ํ key๋ฅผ ๋ถ์ฌํ๋ ๊ฒ์ด ๋ฆฌ์กํธ ๋ ๋๋ง์์ ์๊ธฐ์น ์์ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ณ ์ฑ๋ฅ์ ์ต์ ํํ๋๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
shortid ๋ฅผ ์ฌ์ฉํ ์์
yarn add shortid
or
npm i shortid
import React from 'react';
import shortid from 'shortid';
const DataList = () => {
const dataList = ['Apple', 'Banana', 'Cherry', 'Date'];
return (
<ul>
{dataList.map(item => (
<li key={shortid.generate()}>{item}</li>
))}
</ul>
);
};
export default DataList;
https://medium.com/sjk5766/react-%EB%B0%B0%EC%97%B4%EC%9D%98-index%EB%A5%BC-key%EB%A1%9C
-%EC%93%B0%EB%A9%B4-%EC%95%88%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0-3ce48b3a18fb
[React] ๋ฐฐ์ด์ index๋ฅผ key๋ก ์ฐ๋ฉด ์๋๋ ์ด์
React ๊ณต์ Document๋ฅผ ๋ณด๋ค๊ฐ ์๋ ๋ ธ๋์์ผ๋ก ์บก์ณํ ๋ถ๋ถ์ ๋ณด๊ฒ ๋์๊ณ ํ์ธํ ์ฌํญ๋ค์ ์ ๋ฆฌํฉ๋๋ค.
medium.com
[๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ] shortid - ๋๋ค id ์์ฑ
๋ฆฌ์กํธ Custom Hook ๋ง๋ค๊ธฐ ๊ณผ์ ๋ฅผ ํ๋๋ฐ, useInput ์ปค์คํ ํ ์ ์ง์ด ๋ฃ์ handleSubmit() ํจ์๊ฐ ๋์ ํ์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.๋ถ๋ช codespan์์ ๊ฐ์ธํ์ตํ ๋ ๋ค ํ๊ณ ์ ์ ์๋ ํ๋ ๊ฒ์ ํ์ธํ๋
velog.io