React

[리액트 기초]Fragment

김귤🐵 2023. 3. 31. 17:55

 

 

 

1.Fragment를 사용하는 이유

공식문서의 예제를 확인해보자.아래와 같은 테이블 컴포넌트가 있다.

const Table = () => {
    return(
        <table>
            <tr>
            	<Columns />
            </tr>
        </table>
    );
}

<Columns />는  여러 <td>를 반환 해야 하는데, div로 자식을 감싼다면 렌더링 된 table은 유효하지 않을 것이다.

const Columns = ()=> {
    return (
      <div>
        <td>Hello</td>
        <td>World</td>
      </div>
    );
}

Table의 결과

<table>
  <tr>
    <div>
      <td>Hello</td>
      <td>World</td>
    </div>
  </tr>
</table>

Fragments는 이런식으로 의미없는 <div>를 사용하는 문제를 해결해준다.

import { Fragment } from "react";
const Table = () => {
  return (
    <Fragment>
      <td>Hello</td>
      <td>World</td>
     </Fragment>
  );
}

 

2.단축 문법

Fragment대신 <></> 이런식의 축약형으로 사용이 가능하다.

import { Fragment } from "react";
const Table = () => {
  return (
    <>
      <td>Hello</td>
      <td>World</td>
     </>
  );
}

 

단축문법을 사용할 때 주의해야 할 점은 key를 사용 할 수 없다는 것이다. 

key는 Fragment에 전달할 수 있는 유일한 어트리뷰트다.key를 사용해야 하는 상황이라면

<Frgment>문법으로 선언해 줘야 한다. 

const Glossary =({items}) => {
  return (
    <dl>
      {items.map(item => (
        <Fragment key={item.id}>
          <dt>{item.term}</dt>
          <dd>{item.description}</dd>
        </Fragment>
      ))}
    </dl>
  );
}

 

https://ko.reactjs.org/docs/fragments.html