React에서 컴포넌트가 여러 엘리먼트를 반환하는 것은 흔한 패턴이다. Fragments는 DOM에 별도의 노드를 추가하지 않고 여러 자식을 그룹화할 수 있습니다.
render() {
return (
<React.Fragment>
<ChildA />
<ChildB />
<ChildC />
</React.Fragment>
);
}
단축 문법
class Columns extends React.Component {
render() {
return (
<>
<td>Hello</td>
<td>World</td>
</>
);
}
}
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>
임의의 div
로 감싸면 table에서는 구조가 깨지게 된다. 이처럼 React.Fragment
를 이용한다면 DOM 노드는 생성되지 않고 올바르게 구조를 지킬 수 있다.
key가 있는 Fragment
는 단축 표현(<></>
)를 사용하지 못한다. (반대로 key만 없다면 무조건 사용)
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>
);
}
다음과 같이 key를 전달할 수 있다.