티스토리 뷰
Goal
- React Fragments란?
- React Fragments를 사용하는 이유
- React Fragments 사용시 주의할 점
React Fragments
: 리액트 프래그먼트는 다수의 엘리먼트를 반환하는 컴포넌트를 위한 패턴으로, DOM에 부가적인 노드의 추가 없이 children을 그룹핑 할 수 있게 해준다.
A common pattern in React is for a component to return multiple elements. Fragments let you group a list of children without adding extra nodes to the DOM.
리엑트에서 컴포넌트가 반환하는 return 문 안에는 반드시 하나의 최상위 태그가 있어야 한다. 이는 리액트가 하나의 컴포넌트만을 리턴할 수 있기 때문이다. 이러한 특성 때문에 DOM에 부담을 주지 않고 같은 계층의 엘리먼트를 감싸기 위해 React Fragments를 자주 사용한다.
React Fragments를 왜 사용할까?
예시를 통해 확인해보자.
다음과 같이 ChildA, B, C를 리턴하는 컴포넌트는 Child 엘리먼트를 감싸는 최상위 태그가 없기 때문에 JSX expressions must have one parent element 라는 오류를 발생시킨다.
render() {
return (
// 최상위 태그로 감싸져 있지 않고 같은 계층의 엘리먼트를 return하고 있으므로 오류 발생
<ChildA />
<ChildB />
<ChildC />
);
}
이 때 React.Fragment 태그로 감싸주면 오류를 해결할 수 있고 DOM에 새로운 노드를 추가하지 않아도 된다.
render() {
return (
// div태그와 같이 불필요한 엘리먼트를 선언하지 않고 오류를 해결 할 수 있다.
<React.Fragment>
<ChildA />
<ChildB />
<ChildC />
</React.Fragment>
);
}
React Fragments 사용시 주의할 점.
React.Fragment를 사용하기 위한 단축 문법도 있다. 하지만 단축 문법을 사용할 때는 각 엘리먼트에 key를 적용할 수 없기 때문에 사용을 지양하는게 좋다.
( https://stackoverflow.com/questions/59390955/can-i-add-a-key-prop-to-a-react-fragment )
class Columns extends React.Component {
render() {
return (
// React.Fragment의 단축 문법, 사용이 간단하지만 key를 선언할 수 없다.
<>
<td>Hello</td>
<td>World</td>
</>
);
}
}
'토막지식시리즈 > React 토막지식' 카테고리의 다른 글
리액트에서 "렌더링(rendering)"이란? (1) | 2024.08.23 |
---|---|
react-query에서 특정 상황에서만 데이터를 조회하고 싶을 때 (0) | 2022.12.10 |
Styled Component를 render 함수 바깥에 선언해야 하는 이유 (0) | 2021.10.07 |
SWR API Options (feat. 라이브러리에 대한 고찰) (0) | 2021.06.30 |
- 20201204
- likelion
- 20200420
- 20200417
- 백준
- 20200423
- 생활코딩리눅스
- 20200421
- 20200622
- 20200403
- chapter7
- 20200413
- 20200406
- 20200504
- 20200510
- 20200425
- 20200415
- chapter8
- 20200512
- 20200429
- 20200503
- 20200502
- 20200424
- 20200330
- 20200317
- 20200428
- 20200319
- 20200624
- 20200804
- 20200427
- Total
- Today
- Yesterday