React

React - Component

hyunzxn 2022. 1. 20. 16:32

리액트에는 Component 라는 개념이 있습니다. 복잡한 HTML(JSX)을 간단하게 한 단어로 치환해서 사용하는 개념입니다. 이에 대해 공부해보겠습니다.

 

function App() {
  return (
    <div className="App">
      <div className="modal">
        <h2> Title </h2>
        <p> Date </p>
        <p> Content </p>
      </div>
    </div>  
  )
}

 

modal이라는 UI를 만들기 위해 JSX를 작성했습니다. 그런데 이렇게 만드는 것은 조금 비효율적입니다. 쓸 때마다 저 코드를 반복해서 적어야 하므로 코드가 길어지기 때문입니다. 이를 보완하기 위해 컴포넌트를 사용해보겠습니다.

 

function App() {
  return (
    <div className="App">
      <Modal />
    </div>  
  )
}

function Modal() {
  return (
      <div className="modal">
        <h2> Title </h2>
        <p> Date </p>
        <p> Content </p>
      </div>
    )
 }

 

컴포넌트는 함수 형식으로 만듭니다. 그리고 return ( ) 소괄호 안에 자신이 적고 싶은 JSX를 적어주면 됩니다. 이 때 주의할 점이 있습니다.

 

  • 함수의 이름은 반드시 대문자로 시작해야 합니다. 
  • return ( ) 소괄호 안에는 HTML 태그가 여러개 병렬적으로 올 수 없습니다. 여러 개의 태그를 사용하고 싶다면 <div></div>로 묶어줘야 합니다.
//이렇게는 안 됩니다.

function Component() {
  return (
    <div></div>
    <h2></h2>
  )
}

//이렇게 하셔야 합니다.

function Component() {
  return (
    <div>
      <div></div>
      <h2></h2>
    </div>  
  )
}

 

이렇게 컴포넌트를 만들어 주면 이제 Modal 컴포넌트는 원하는데 아무데나 갖다가 쓸 수 있습니다. <Modal /> 이렇게만 입력해주면 됩니다. 훨씬 직관적으로 코드의 의미를 이해할 수 있습니다. 

 

 

그러면 컴포넌트는 주로 언제 사용할까요? 정해진 기준은 없지만 다음과 같은 경우에 주로 컴포넌트화 해서 많이 만들어 놓습니다.

 

  • 사이트에 반복적으로 출현하는 HTML 덩어리
  • 내용이 자주 변경될 것 같은 HTML 부분
  • 다른 페이지를 만들고 싶을 때 그 페이지의 내용
  • 팀원과 협업할 때 웹 페이지를 컴포넌트 단위로 쪼개서 협업하기도 합니다.

절대적인 것은 아니니 참고하면 좋을 것 같습니다.

 

 

다만 컴포넌트를 이렇게 만들어 놓으면 단점이 있습니다. 

 

  • 컴포넌트를 여러 개 만들어 놓으면 관리하기가 힘들어 질 수 있습니다.
  • 컴포넌트가 다른 컴포넌트 안에 있는 state를 사용하고 싶을 때 바로 사용할 수가 없습니다. (props 문법이 필요합니다)
728x90

'React' 카테고리의 다른 글

React - props  (0) 2022.01.20
React - map 함수로 반복문 사용하기  (0) 2022.01.20
React - state 변경하는 법  (0) 2022.01.20
React - state  (0) 2022.01.20
React - JSX  (0) 2022.01.20