티스토리 뷰

React Fragments
React에서 컴포넌트가 여러 엘리먼트를 반환하도록 사용하는 것이 일반적인데, Fragment는 DOM에 의미 없는 div를 사용하지 않고 여러 하위 노드들을 그룹화해서 사용할 수 있습니다!
render() {
return (
<React.Fragment>
<ChildA />
<ChildB />
<ChildC />
</React.Fragment>
);
}
예를 들어 Table과 테이블 아래의 Column을 세팅해주는 컴포넌트가 있다고 가정합니다.
class Table extends React.Component {
render() {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
}
class Columns extends React.Component {
render() {
return (
<div>
<td>Hello</td>
<td>World</td>
</div>
);
}
}
이때 Table의 출력결과는 아래와 같이 나옵니다.
<table>
<tr>
<div>
<td>Hello</td>
<td>World</td>
</div>
</tr>
</table>
결과를 보면 tr 아래에 div라는 의미 없는 노드가 들어가 있는 것을 확인할 수 있습니다.
리엑트에서는 이러한 문제를 해결하기 위해 <React.Fragment>라는 태그를 사용합니다.
class Columns extends React.Component {
render() {
return (
<React.Fragment>
<td>Hello</td>
<td>World</td>
</React.Fragment>
);
}
}
ㅊ
출력결과는 아래와 같습니다.
<table>
<tr>
<td>Hello</td>
<td>World</td>
</tr>
</table>
이러한 Fragement 태그를 사용하는 것보다 더 직관적으로 사용하는 것이 <>입니다.
class Columns extends React.Component {
render() {
return (
<>
<td>Hello</td>
<td>World</td>
</>
);
}
}
만약, Table에 Key를 매핑시키고 싶으면 <React.Fragment> 명시적으로 작성해주어야 합니다.
function Glossary(props) {
return (
<dl>
{props.items.map(item => (
// React는 `key`가 없으면 key warning을 발생합니다.
<React.Fragment key={item.id}>
<dt>{item.term}</dt>
<dd>{item.description}</dd>
</React.Fragment>
))}
</dl>
);
}
'WEB > React.js' 카테고리의 다른 글
[React] 부모 - 자식 컴포넌트 간의 데이터 전달 방법 (0) | 2023.03.08 |
---|---|
React 18 주요 변경점 (2) | 2023.01.17 |
React.js 2 - Props & State 정리(2) (0) | 2022.10.26 |
React.js 2 - Props & State 정리(1) (0) | 2022.10.26 |
React.js 1 - 기초 개념정리 (0) | 2022.10.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- vite
- 레포지토리패턴
- 프로덕트설계
- 이벤트리스너
- JWT토큰
- Repository pattern
- 개발자
- react
- Vue.js
- props
- eventListner
- 더미데이터
- 구름톤
- 로그인 인증
- 시스템설계
- 디자인시스템
- vue.js3
- 그림으로 이해하는 시스템 설계
- 알고리즘
- http
- store.js
- event종류
- 회고
- 결제기능
- 항해플러스후기
- focus와blur
- 항해플러스프론트엔드
- vue3
- React18v
- 항해솔직후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함