v19.2Latest

컴포넌트 가져오기 및 내보내기

컴포넌트의 마법은 재사용성에 있습니다: 다른 컴포넌트로 구성된 컴포넌트를 만들 수 있습니다. 하지만 더 많은 컴포넌트를 중첩할수록, 종종 이를 다른 파일로 분리하는 것이 합리적입니다. 이렇게 하면 파일을 쉽게 살펴볼 수 있고 컴포넌트를 더 많은 곳에서 재사용할 수 있습니다.

배울 내용
  • 루트 컴포넌트 파일이 무엇인지
  • 컴포넌트를 가져오고 내보내는 방법
  • 기본 및 명명된 가져오기와 내보내기를 사용하는 시기
  • 한 파일에서 여러 컴포넌트를 가져오고 내보내는 방법
  • 컴포넌트를 여러 파일로 분할하는 방법

루트 컴포넌트 파일

첫 번째 컴포넌트 만들기에서 Profile컴포넌트와 이를 렌더링하는Gallery컴포넌트를 만들었습니다:

이들은 현재 루트 컴포넌트 파일에 있으며, 이 예시에서는App.js라는 이름입니다. 설정에 따라 루트 컴포넌트는 다른 파일에 있을 수도 있습니다. Next.js와 같은 파일 기반 라우팅을 사용하는 프레임워크를 사용하는 경우, 각 페이지마다 루트 컴포넌트가 다를 것입니다.

컴포넌트 내보내기 및 가져오기

나중에 랜딩 화면을 변경하여 과학 서적 목록을 배치하려면 어떻게 해야 할까요? 아니면 모든 프로필을 다른 곳에 배치하려면요?GalleryProfile를 루트 컴포넌트 파일 밖으로 이동시키는 것이 합리적입니다. 이렇게 하면 더 모듈화되고 다른 파일에서 재사용하기 쉬워집니다. 컴포넌트를 이동시키는 데는 세 단계가 있습니다:

  1. 만들기: 컴포넌트를 넣을 새 JS 파일을 만듭니다.
  2. 내보내기: 해당 파일에서 함수 컴포넌트를 내보냅니다 (기본또는명명된내보내기 사용).
  3. 가져오기: 컴포넌트를 사용할 파일에서 가져옵니다 (기본또는명명된내보내기를 가져오는 해당 기술 사용).

여기서ProfileGallery 모두 App.js에서 Gallery.js라는 새 파일로 이동되었습니다. 이제App.js를 변경하여GalleryGallery.js에서 가져올 수 있습니다:

이 예시가 이제 두 개의 컴포넌트 파일로 어떻게 분해되었는지 확인하세요:

  1. Gallery.js:
    • 동일 파일 내에서만 사용되고 내보내지지 않는Profile 컴포넌트를 정의합니다.
    • Gallery컴포넌트를기본 내보내기로 내보냅니다.
  2. App.js:
    • Gallery기본 가져오기Gallery.js에서 가져옵니다.
    • 루트 App컴포넌트를기본 내보내기로 내보냅니다.
참고

다음과 같이 .js파일 확장자를 생략하는 파일을 접할 수 있습니다:

'./Gallery.js'또는'./Gallery'모두 React에서 작동하지만, 전자가네이티브 ES 모듈의 작동 방식에 더 가깝습니다.

Deep Dive
기본 내보내기 vs 이름 있는 내보내기

같은 파일에서 여러 컴포넌트 내보내기 및 가져오기

갤러리가 아닌 하나의Profile만 표시하고 싶다면 어떻게 해야 할까요?Profile컴포넌트도 내보낼 수 있습니다. 하지만Gallery.js에는 이미기본내보내기가 있고,두 개의기본 내보내기를 가질 수는 없습니다. 기본 내보내기가 있는 새 파일을 만들거나,이름 있는내보내기를 추가할 수 있습니다.Profile에 대한파일은 기본 내보내기를 하나만 가질 수 있지만, 이름 있는 내보내기는 여러 개 가질 수 있습니다!

참고

기본 내보내기와 이름 있는 내보내기 사이의 잠재적인 혼란을 줄이기 위해, 일부 팀은 하나의 스타일(기본 또는 이름 있는)만 고수하거나 단일 파일에서 혼합하는 것을 피하기로 선택합니다. 여러분에게 가장 잘 맞는 방식을 사용하세요!

먼저,내보내기ProfileGallery.js에서 이름 있는 내보내기로 내보냅니다(default키워드 없이):

그런 다음,명명된 임포트(중괄호 사용)를 통해ProfileGallery.js에서App.js로 가져옵니다:

마지막으로,렌더링<Profile />App컴포넌트에서 수행합니다:

이제Gallery.js에는 두 개의 내보내기가 있습니다: 기본Gallery내보내기와 명명된Profile내보내기입니다.App.js는 둘 다 가져옵니다. 이 예제에서<Profile /><Gallery />로 바꾸고 다시 돌려보세요:

이제 기본 내보내기와 명명된 내보내기를 혼합하여 사용하고 있습니다:

  • Gallery.js:
    • 명명된 내보내기Profile으로 Profile 컴포넌트를 내보냅니다.
    • 기본 내보내기로Gallery컴포넌트를내보냅니다.
  • App.js:
    • 명명된 임포트Profile으로Gallery.js에서 Profile을 가져옵니다.
    • 기본 임포트로GalleryGallery.js에서 가져옵니다.
    • 기본 내보내기로 루트App컴포넌트를내보냅니다.

요약

이 페이지에서 배운 내용:

  • 루트 컴포넌트 파일이 무엇인지
  • 컴포넌트를 가져오고 내보내는 방법
  • 기본 및 명명된 임포트와 내보내기를 언제, 어떻게 사용하는지
  • 동일한 파일에서 여러 컴포넌트를 내보내는 방법

도전 과제를 시도해 보세요

Challenge 1 of 1:컴포넌트를 더 분리하기 #

현재 Gallery.jsProfileGallery를 모두 내보내고 있어 다소 혼란스럽습니다.

Profile 컴포넌트를 자체 Profile.js 파일로 옮기고, App 컴포넌트가 <Profile /><Gallery />를 차례로 렌더링하도록 변경하세요.

Profile에 대해 기본 내보내기 또는 이름 있는 내보내기 중 하나를 사용할 수 있지만, App.jsGallery.js 모두에서 해당하는 가져오기 구문을 사용해야 합니다! 위의 심층 분석에 있는 표를 참조할 수 있습니다:

한 종류의 내보내기로 작동하게 만든 후, 다른 종류의 내보내기로도 작동하게 만드세요.