๐จ Frontend/React
๐ฎ React - 7. ์ปดํฌ๋ํธ ๋ฐ๋ณต (Array, Map)
kongmi
2023. 4. 13. 13:54
- ๋ฆฌ์กํธ์์ ๋ฐฐ์ด๊ณผ ๋งต์ ์ปดํฌ๋ํธ ๋ ๋๋ง์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
- ๋ฐฐ์ด์ ์์๊ฐ '์๋' ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก, ๊ฐ ์์๋ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ๋งต์ key์ value๋ฅผ ๊ฐ์ง๋ ๊ตฌ์กฐ๋ก, key์ value ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ key๋ ์ค๋ณต๋์ง ์๋ ๊ณ ์ ํ ๊ฐ ์ ๋๋ค.
๊ณ ์ ๋ฐฐ์ด ๋ ๋๋ง
๐ ๋นํจ์จ ์ ์ธ ๋ฐฉ๋ฒ : ๋ฐฐ์ด ๊ทธ๋๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ
import React from 'react';
const ArrayTest = () => {
const users = [
{
id: 100,
userName: 'Karly',
eMail: 'king@naver.com'
},
{
id: 200,
userName: 'Elastine',
eMail: 'hoho@gmail.com'
},
{
id: 300,
userName: 'Kim',
eMail: 'kim@kakao.com'
}
];
return (
<>
<div>
<b>{users[0].userName}</b> <span>{users[0].eMail}</span>
</div>
<div>
<b>{users[1].userName}</b> <span>{users[1].eMail}</span>
</div>
<div>
<b>{users[2].userName}</b> <span>{users[2].eMail}</span>
</div>
</>
);
}
export default ArrayTest;
์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ props๋ก ์ ๋ฌ
import React from 'react';
const User = (props) => {
return (
<>
<b>{props.user.userName}</b> <span>{props.user.eMail}</span>
</>
);
}
const ArrayTest2 = () => {
const users = [
{
id: 100,
userName: 'Karly',
eMail: 'king@naver.com'
},
{
id: 200,
userName: 'Elastine',
eMail: 'hoho@gmail.com'
},
{
id: 300,
userName: 'Kim',
eMail: 'kim@kakao.com'
}
];
return (
<>
<div>
<User user={users[0]}/>
</div>
<div>
<User user={users[1]} />
</div>
<div>
<User user={users[2]} />
</div>
</>
);
}
export default ArrayTest2;
map() ํจ์ ์ด์ฉ
import React from "react";
const MapTest = () => {
const users = [
{
id: 100,
userName: "Karly",
eMail: "king@naver.com",
},
{
id: 200,
userName: "Elastine",
eMail: "hoho@gmail.com",
},
{
id: 300,
userName: "Kim",
eMail: "kim@kakao.com",
},
];
return (
<>
{users &&
users.map((user) => (
<div key={user.id}>
<p>{user.userName} : {user.eMail}</p>
</div>
))}
</>
);
};
export default MapTest;
useState์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ
To Do List
import React,{useState} from "react";
import "./App.css";
const IterationSample = () => {
const [names, setNames] = useState([
{id: 1, text: '๋์ฌ๋'},
{id: 2, text: '์ผ์'},
{id: 3, text: 'ํฌ๋ฆฌ์ค๋ง์ค'},
{id: 4, text: '๊ฒจ์ธ'}
]);
const [inputText, setInputText] = useState("");
const [nextId, setNextId] = useState(5);
const onChange = e => setInputText(e.target.value);
const onClick = () => {
const nextNames = names.concat({
id: nextId,
text: inputText
});
setNextId(nextId + 1);
setNames(nextNames);
setInputText(""); // inputText๋ฅผ ๋น์์ค
}
const onRemove = id => {
const nextNames = names.filter(name => name.id !== id);
setNames(nextNames);
}
const namesList = names.map(name => (
<li key={name.id} onDoubleClick={() => onRemove(name.id)}>{name.text}</li>
));
return (
<>
<p className="title-name">To Do List!</p>
<p>์ญ์ ๋ ํด๋น ํญ๋ชฉ์ ๋๋ธํด๋ฆญ ํ์ธ์.</p>
<input type="text" value={inputText} onChange={onChange} />
<button onClick={onClick}>์ถ๊ฐ</button>
<ul>
{namesList}
</ul>
</>
);
}
export default IterationSample;
.title-name {
color: royalblue;
font-size: 2em;
background-color: orange;
}