궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
FRONT-END/React

[React] - 컴포넌트 (함수형 / 클래스형)

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

컴포넌트?

컴포넌트란 리액트의 핵심 빌딩 블록 중 하나로, UI 요소를 표현하는 최소한의 단위이며 화면의 특정 부분이 어떻게 생길지 정하는 선언체입니다. 개념적으로 컴포넌트는 JavaScript 함수와 유사하다.

  • 선언체란 컴포넌트를 생성하고 보이고자 하는 UI 요소를 컴포넌트 내부에서 JSX를 통해 선언하면 이것을 React가 화면에서 그려주는데, 이를 통해 React 컴포넌트가 선언체라는 것을 알 수 있다.

props라고props라고 하는 임의의 입력을 받은 후, 화면에 어떻게 표시되는지를 기술하는 React 엘리먼트를 반환한다.

컴포넌트 파일은 `App.jsx` 처럼 `.js `확장자가 아닌 `.jsx` 확장자를 쓰는 것이 직관적으로 좋다.

 

하지만 별다른 차이점은 없다. (협업 시 편함)

1. 리액트 컴포넌트를 표현하는 두 가지 방법

함수형 컴포넌트 (권장)

// props라는 입력을 받음 
// 화면에 어떻게 표현되는지를 기술하는 React 엘리먼츠를 반환(return) 
function Welcome(props) { 
    return(
    <h1>Hello, {props.name}</h1> 
    ); 
} 

// 훨씬 쉬운 표현을 해보면 아래와 같다. 
function App() { return <div>hello</div> }

클래스형 컴포넌트

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

리액트에서 컴포넌트는 쉽게 말해 '함수' 이다. '컴포넌트를 만들어 보세요' 라는건 html에서 return 하는 함수를 만들면 된다.

주의

  • 컴포넌트를 만들 때 반드시 가장 첫 글자는 대문자로 만들어야 한다.
  • 폴더는 소문자로 시작하는 카멜케이스로 작성하고, 컴포넌트를 만드는 파일은 대문자로 시작하는 카멜케이스로 이름을 지어야 한다.

2. 컴포넌트 예제

import React from 'react';
import PropTypes from 'prop-types';

const Btn = ({ text, event }) => {
  return (
    <div>
      <button onClick={event}>{text}</button>
    </div>
  );
};

const Child = () => {
  return (
    <div>
      <h1>가족</h1>
    </div>
  );
};

const Mother = () => <Child />;
const Grandfather = () => <Mother />;

Btn.propTypes = {
  text: PropTypes.string.isRequired,
};

function App() {
  // <---- 자바스크립트 영역 ---->
  const clickEvents = () => {
    alert('클릭!');
  };
  return (
    /* <---- HTML/JSX 영역  ---->*/
    <div
      style={{
        height: '100vh',
        display: ' flex',
        flexDirection: 'column',
        justifyContent: 'center',
        alignItems: 'center',
      }}
    >
      <p>이것은 내가 만든 App컴포넌트 입니다.</p>
      <Btn event={clickEvents} text={'클릭'} />

      <Grandfather />
    </div>
  );
}

export default App;

React관련 파일 Github로 보기
 

GitHub - Seogun95/React_Note: 👨🏼‍💻 리액트 자료 정리 with 옵시디언

👨🏼‍💻 리액트 자료 정리 with 옵시디언. Contribute to Seogun95/React_Note development by creating an account on GitHub.

github.com

 

'FRONT-END > React' 카테고리의 다른 글

[React] - 환경 세팅  (0) 2023.02.12
[React] - 자주 사용되는 ES6 문법  (0) 2023.02.12
[React] - SPA / MPA ?  (0) 2023.02.12

잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.