배열 렌더링
동적인 배열을 렌더링해야 할때에는 자바스크립트 배열의 내장함수 map()을 사용합니다.
map() 함수는 배열안에 있는 각 원소를 변환하여 새로운 배열을 만들어주며, 일반 데이터 배열을 리액트 엘리먼트로 이루어진 배열로 변환해주면 됩니다.
리액트 에서는 map을 사용하여 렌더링 할 경우 key가 필요하며, 수정되지 않는 기존의 값을 그대로 두고 원하는 곳에 내용을 삽입하거나 삭제하기 때문에 효과적으로 렌더링을 할 수 있습니다.
UserList.js
import React from 'react';
// 데이터에 key가 있을 경우
const UserKey = ({user}) => {
return (
<>
<b>key가 있을 경우</b><p>{user.username} "{user.email}" <br /></p>
</>
)
}
const UserKeyList = () => {
const users = [
{
id: 1,
username: 'a',
email : 'aaa@gmail.com'
},
{
id: 2,
username: 'b',
email : 'bbb@gmail.com'
},
{
id: 3,
username: 'c',
email : 'ccc@gmail.com'
}
]
return (
<>
// 데이터 고유 값 id === key
{users.map(user => (
<UserKey user={user} key={user.id}/>
))}
</>
)
}
// 데이터에 key가 없을 경우
const User = ({user}) => {
return(
<>
<b>key가 없을 경우</b><p>{user.username} "{user.email}" <br /></p>
</>
)
}
const UserList = () => {
const users = [
{
username: 'a',
email : 'aaa@gmail.com'
},
{
username: 'b',
email : 'bbb@gmail.com'
},
{
username: 'c',
email : 'ccc@gmail.com'
}
]
return (
<>
// 데이터에 고유한 값이 없다면, 콜백함수의 두번째 파라미터 index를 key로 사용
{users.map((user, index) => (
<User user={user} key={index} />
))}
</>
)
}
function Main() {
return (
<>
<UserList />
<UserKeyList />
</>
)
}
export default Main;
App.js
import React from 'react';
import Inner from "./Inner";
import UserList from "./UserList";
function App() {
return (
<React.Fragment>
<Inner>
<UserList/>
</Inner>
</React.Fragment>
);
}
export default App;
'Web Tech > react' 카테고리의 다른 글
react 기본 - 12.배열 항목 수정 (0) | 2021.11.23 |
---|---|
react 기본 - 11.배열 항목 제거 (0) | 2021.11.23 |
react 기본 - 10.배열 항목 추가 (0) | 2021.11.23 |
react 기본 - 9.useRef (0) | 2021.11.23 |
react 기본 - 8.useState(change event) (0) | 2021.11.22 |