KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • Level 0
  • Level 1
  • string
  • codeup
  • C++
  • 그래프
  • 문자열
  • programmers
  • 백준
  • 다이나믹 프로그래밍
  • LeetCode
  • Level 2
  • 정렬
  • tree
  • C
  • Level1
  • 제코베 JS 100제
  • recursion
  • js
  • 수학

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun
React 공식문서 (번역, 공부)/Describing the UI

Your First Component

React 공식문서 (번역, 공부)/Describing the UI

Your First Component

2023. 5. 7. 02:44

컴포넌트 정의

1단계: 컴포넌트 내보내기

표준 JavaScript 구문에서 export default 키워드로 현재 파일에 존재하는 컴포넌트를 내보낼 수 있다. 내보내게 되면 다른 파일에서 이 컴포넌트를 import 해와서 사용할 수 있다.

 

2단계: 함수 정의

컴포넌트도 결국 React에서 화면에 렌더링하기 위한 함수이다. 따라서 함수를 정의해주면 된다. 이 때 주의할 점은 React 컴포넌트 또한 일반 JavaScript 함수라고 말했지만, 이름은 무조건 대문자로 시작해야 한다. 그렇지 않으면 일반 HTML 태그로 인식하기 때문에 작동하지 않는다.

 

3단계: 마크업 추가

만약 img 태그를 반환한다고 하면 다음과 같이 작성할 수 있다. HTML 처럼 보이지만 JavaScript이다. (JSX)

return <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />;

 

하지만 마크업이 return 키워드와 같은 줄에 있지 않으면 괄호로 묶어주어야 한다.

// 아래와 같이 최상위 태그로 묶어주거나,
return (
  <div>
    <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  </div>
);

// 태그가 하나만 있을 경우인데 한줄에 쓰기 싫을 경우는 다음과 같이 해주면 된다
return (
    <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
);

 

괄호가 없다면 return 다음 줄의 코드는 무시되니까 주의하자!

 

 

컴포넌트 사용

컴포넌트를 만들었으면 다음과 같이 다른 컴포넌트 안에 중첩이 가능하다. 그리고 다른 파일에서 사용할 수 있도록 export 키워드로 내보낼 수 있다.

 

브라우저가 보는 것

태그가 대문자로 시작하는지 소문자로 시작하는지 유의하면서 보면 된다.

  • <section>은 소문자이므로 HTML 태그이다.
  • <Profile />은 대문자로 시작하므로 React의 컴포넌트라는것을 나타낸다.

결국 브라우저에 표시되는 내용은 HTML로 변환되어 다음과 같다.

<section>
  <h1>Amazing scientists</h1>
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
  <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</section>

 

 

Challenge

다음 문제들이 정상적으로 동작하도록 코드를 바꾸면 된다.

 

1. 컴포넌트 내보내기

function Profile() {
  return (
    <img
      src="https://i.imgur.com/lICfvbD.jpg"
      alt="Aklilu Lemma"
    />
  );
}

언뜻 봐서는 문제가 없어보이는 코드이다. 하지만 해당 컴포넌트를 export 하지 않았기 때문에 화면에 렌더링 할 수 없다. (다른곳에서 사용하거나 불러올 수 없다) 따라서 다음과 같이 고치면 된다.

 

// 1. 키워드를 함수 앞에 붙일 경우
export default function Profile() {
  return (
    <img
      src="https://i.imgur.com/lICfvbD.jpg"
      alt="Aklilu Lemma"
    />
  );
}

// 2. 키워드를 따로 사용할 경우
function Profile() {
  return (
    <img
      src="https://i.imgur.com/lICfvbD.jpg"
      alt="Aklilu Lemma"
    />
  );
}

export default Profile;

 

 

2. 반환문 수정

export default function Profile() {
  return
    <img src="https://i.imgur.com/jA8hHMpm.jpg" alt="Katsuko Saruhashi" />;
}

 

위에서 말했듯이, return문 옆에 한줄로 쓰지 않는다면 다음 줄은 무시된다. 따라서 다음과 같은 방법으로 고칠 수 있다.

export default function Profile() {
  return <img src="https://i.imgur.com/jA8hHMpm.jpg" alt="Katsuko Saruhashi" />;
}

 

혹은 return 키워드 밑에 사용하고 싶다면 괄호로 묶어주면 된다.

export default function Profile() {
  return(
    <img src="https://i.imgur.com/jA8hHMpm.jpg" alt="Katsuko Saruhashi" />
  )
}

단, 괄호 안에 넣을 경우에는 한 줄로 썼을 경우와 다르게 끝에 세미콜론(;)이 빠진다는것에 주의해야 한다.

 

 

 

3. 실수 찾기

function profile() {
  return (
    <img
      src="https://i.imgur.com/QIrZWGIs.jpg"
      alt="Alan L. Hart"
    />
  );
}

export default function Gallery() {
  return (
    <section>
      <h1>Amazing scientists</h1>
      <profile />
      <profile />
      <profile />
    </section>
  );
}

 

위에서 말했듯이, 일반 HTML 태그와 React 컴포넌트에는 이름을 짓는데 차이가 있다. 태그가 소문자로 시작하게 되면 일반 HTML 태그로 인식이되고, 앞에 대문자로 시작하게 되면 우리가 만든 컴포넌트로 인식이 되어 사용할 수 있다. 따라서 다음과 같이 고치면 된다.

function Profile() {
  return (
    <img
      src="https://i.imgur.com/QIrZWGIs.jpg"
      alt="Alan L. Hart"
    />
  );
}

export default function Gallery() {
  return (
    <section>
      <h1>Amazing scientists</h1>
      <Profile />
      <Profile />
      <Profile />
    </section>
  );
}

 

 

4. 나만의 컴포넌트

<h1>Good job!</h1>이 포함되어 있는 Congratulations 컴포넌트를 만들어보자.

// Write your component below!
export default function Congratulations() {
  return <h1>Good job!</h1>;
}
저작자표시 (새창열림)

'React 공식문서 (번역, 공부) > Describing the UI' 카테고리의 다른 글

JavaScript in JSX with Curly Braces  (2) 2023.05.08
Writing Markup with JSX  (0) 2023.05.07
Importing and Exporting Components  (0) 2023.05.07
Describing the UI  (0) 2023.05.07
  • 컴포넌트 정의
  • 1단계: 컴포넌트 내보내기
  • 2단계: 함수 정의
  • 3단계: 마크업 추가
  • 컴포넌트 사용
  • 브라우저가 보는 것
  • Challenge
  • 1. 컴포넌트 내보내기
  • 2. 반환문 수정
  • 3. 실수 찾기
  • 4. 나만의 컴포넌트
'React 공식문서 (번역, 공부)/Describing the UI' 카테고리의 다른 글
  • JavaScript in JSX with Curly Braces
  • Writing Markup with JSX
  • Importing and Exporting Components
  • Describing the UI
KimMinJun
KimMinJun
Coding NoteKimMinJun 님의 블로그입니다.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.