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 |
Tags
- Crawling
- stopPropogation
- Spring Security
- SpringRESTDocs
- Pender
- cloud native
- Flyway
- 리액트
- T-OTP
- vue
- Spring Batch
- SpringBoot
- Filter
- AuthenticatoinProvide
- axios
- vuejs
- MSA
- openapi3
- SWAGGER
- OpenStack
- Spring REST Docs
- preventdefault
- JavaScript
- cheerio
- REACT
- Reduxpender
- MFA
- UsernamePasswordAuthenticationFilter
- gradle
- tasklet
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