Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- AuthenticatoinProvide
- 리액트
- OpenStack
- UsernamePasswordAuthenticationFilter
- Flyway
- gradle
- T-OTP
- tasklet
- Spring Security
- SWAGGER
- MSA
- JavaScript
- SpringRESTDocs
- vuejs
- MFA
- stopPropogation
- axios
- Pender
- openapi3
- Filter
- preventdefault
- vue
- REACT
- Crawling
- cheerio
- cloud native
- Spring REST Docs
- Spring Batch
- Reduxpender
- SpringBoot
Archives
- Today
- Total
Miracle Morning, LHWN
9. 배열을 렌더링 해보기 본문
import React from 'react';
function UserList() {
const users = [
{
id: 1,
username: 'velopert',
email: 'public.velopert@gmail.com'
},
{
id: 2,
username: 'tester',
email: 'tester@example.com'
},
{
id: 3,
username: 'liz',
email: 'liz@example.com'
}
];
return (
<div>
<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[1].email})</span>
</div>
</div>
);
}
export default UserList;
이렇게 값을 넣어주면 되지만, 위 방법은 비효율적인 방법이다.
컴포넌트를 선언해서 그 컴포넌트를 재사용해가며 값을 채워주면 더 좋을 것이다.
import React from 'react';
function User({ user }) {
return (
<div>
<b>{user.username}</b> <span>({user.email})</span>
</div>
);
}
function UserList() {
const users = [
{
id: 1,
username: 'velopert',
email: 'public.velopert@gmail.com'
},
{
id: 2,
username: 'tester',
email: 'tester@example.com'
},
{
id: 3,
username: 'liz',
email: 'liz@example.com'
}
];
return (
<div>
<User user={users[0]} />
<User user={users[1]} />
<User user={users[2]} />
</div>
);
}
export default UserList;
근데 또 배열이 동적인 값이라면 map() 이라는 것을 사용하면 된다. → 일반 데이터 배열을 리액트 엘리먼트 <User> 배열로 변환해주면 된다!
(※ map() : 배열안에 있는 각 원소를 변환하여 새로운 배열을 만들어준다.)
근데 이때! 리액트에서 배열을 렌더링 할 때는 key 라는 props 를 설정해주어야 한다! (안그러면 오류남!)
왜냐하면 각 고유 원소에 key가 있어야만 배열이 업데이트될 때 효율적으로 렌더링 할 수 있기 때문이다.
(key를 통해 각 원소를 특정하여 업데이트하거나 삭제하기 때문에 훨~씬 효율적이다.)
(상세 설명은 출처 : https://react.vlpt.us/basic/11-render-array.html)
만약, 배열에 딱히 고유한 값이 없다면 map() 함수를 사용할 때 설정하는 콜백함수의 두 번째 파라미터 index를 key로 사용해주면 된다.
key 를 설정안해주면 기본적으로 배열의 index 값을 key로 사용하지만 오류가 난다.
import React from 'react';
function User({ user }) {
return (
<div>
<b>{user.username}</b> <span>({user.email})</span>
</div>
);
}
function UserList() {
const users = [
{
id: 1,
username: 'velopert',
email: 'public.velopert@gmail.com'
},
{
id: 2,
username: 'tester',
email: 'tester@example.com'
},
{
id: 3,
username: 'liz',
email: 'liz@example.com'
}
];
return (
<div>
{users.map(user => (
<User user={user} key={user.id}/>
))}
</div>
);
/*
return (
<div>
{users.map((user, index) => (
<User user={user} key={index} />
))}
</div>
);
*/
export default UserList;
출처 : https://react.vlpt.us/basic/11-render-array.html
'IT 기술 > [React] 기본' 카테고리의 다른 글
11. 배열에 원소를 추가하는 두 가지 방법 (0) | 2021.05.25 |
---|---|
10. 컴포넌트에서 변수를 관리해주는 useRef (0) | 2021.05.24 |
8. 특정 DOM을 선택하고 싶을 때에는 useRef로 (0) | 2021.05.24 |
7. 이번에는 useState로 여러 개의 <input> 상태 값 관리해보기 (0) | 2021.05.24 |
6. useState를 이용해서 <input> 상태 값 관리해보기 (0) | 2021.05.24 |
Comments