고객 컴포넌트 만들기

Tin9oo·2023년 12월 7일
0

컴포넌트

고객 컴포넌트를 만들어보겠다.
한명의 고객에 대한 정보를 보여주는 기능이다.

React 라이브러리는 HTML 문서를 효과적으로 보여주기 위한 라이브러리다.
따라서 컴포넌트 개념이 사용된다. 컴포넌트는 웹 문서에서 어떤 내용을 보여주기 위한 기본적인 단위다.

App.jsApp은 웹 프로그램을 화면에 출력하기 위한 컴포넌트다.
이 컴포넌트가 index.html에서 root의 위치에 그려진다.

즉, 웹 문서에서 그려지게 될 최소 단위가 컴포넌트다.

또한, 컴포넌트는 계층적으로 구성가능하다.

App 컴포넌트 안에 다른 여러개의 컴포넌트가 내부적으로 들어갈 수 있다.

고객 컴포넌트 생성

지금부터 만들 컴포넌트는 모두 하나의 공간에 모아놓겠다.
src 폴더 내부에 components 폴더를 생성한다.

components 폴더 내부에 Customer.js 파일을 생성한다.

React에서 하나의 소스코드를 작성할 때는 importexport가 많이 활용된다.

import: 특정한 라이브러리를 불러오는 것.

React 컴포넌트 라이브러리를 사용하기 위해서 다음의 import 구문으로 불러올 수 있다.

import React from 'react';

이후에 다른 컴포넌트에서 현재 우리가 만들고 있는 Customer 컴포넌트를 사용할 수 있도록 하기 위해서 내보내기(export)를 할 수 있어야한다. (클래스를 내보낸다?)

export default Customer;

위의 두 구문 사이에 Customer 컴포넌트를 정의해야한다.
Customer 클래스는 ReactComponent 형태로 작성된 클래스다.
(ReactComponent는 일종의 라이브러리이자 클래스다.)
클래스를 상속받아서 하나의 컴포넌트를 정의할 수 있는 것이다.

ReactComponent라는 라이브러리에는 render()라는 함수가 포함되어있다.
render()는 항상 수행되는 내용으로써 Customer라는 컴포넌트를 실제 화면에 그리고자 할 때 실제로 그려지는 내용이 render()에 담기게 된다.

class Customer extends React.Component {
  render() {
    return (
      <div>
      	<h2>tin9oo</h2>
      	<p>19990601</p>
      	...
      </div> 
    )
  }
}

이때, render()return()HTML 구문이 들어가야한다.

App.js에서 사용자 정의 컴포넌트 사용

return 안에서 컴포넌트를 불러온다.
App 컴포넌트 안에 Customer 컴포넌트가 포함된 채로 출력된다.

class App extends Component {
  render() {
    return (
      <Customer/>
    )
  }
}

Customer 클래스를 사용하기 위해서는 Customer 클래스를 import 해줘야한다.

import Customer from './components/Customer';

(이 단계에서 필요하지 않은 import를 제거한다.)

현재까지의 수정 사항을 웹브라우저로 확인 할 수 있다.
정상적으로 컴포넌트가 출력되는 것을 확인한다.

이를 통해 index.htmlroot에는 App.jsApp 컴포넌트가 그려지고 App 컴포넌트는 Customer 컴포넌트를 그린다는 사실을 간접적으로 확인할 수 있다.

Props

실제로 React를 이용할 때는 내용을 하드코딩해서 넣지 않는다.
props를 이용해서 출력한다. 말그대로 속성 이라는 의미다.

AppCustomer 컴포넌트를 부를 때 props를 이용해서 데이터를 전달 할 수 있다.

class App extends Component {
  render() {
  	return (
      <Customer
      	name={}
  		birthday={}
		...
      />
    )
  }
}

name, birthday 등의 속성으로 데이터를 넘겨준다.

class 상단에 보낼 데이터를 명시할 수 있다.

const customer = {
  'name': 'tin9oo',
  'birthday': '19990601',
  ...
}

Customer 컴포넌트를 불러옴에 있어서 방금 정의한 값을 props로 전달할 수 있다.

class App extends Component {
  render() {
  	return (
      <Customer
      	name={customer.name}
  		birthday={customer.birthday}
		...
      />
    )
  }
}

이제Customer는 전달받은 props를 이용해서 화면에 출력한다.
props는 기본적으로 React.Component가 포함하는 내용이다. 따라서 this 키워드로 전달받은 데이터를 읽는다.

class Customer extends React.Component {
  render() {
    return (
      <div>
        <h2>{this.props.name}</h2>
        <p>{this.props.birthday}</p>
      	...
      </div> 
    )
  }
}

새로고침 해보면 동일한 결과가 출력되는 것을 알 수 있다.

다만, 이제는 props를 통해 계층적이고 구조화된 출력물을 볼 수 있다.

App.js에서 customer의 내용만 바꾸어주면 출력 결과가 달라지는 것을 볼 수 있다.
기존의 코드보다 구조화된 것을 알 수 있다.

(다음 게시물에 이어서..)


이 강의를 통해 공부한 내용을 정리한 게시물입니다.

profile
🚙 HMG SOFTEER 3rd | 💻 BE

0개의 댓글