컴포넌트 제작 실습

React 학습에 앞서 컴포넌트 제작 실습

비주얼 디자인 분석

제공 된 디자인 예제 파일을 분석해 브라우저에 UI를 렌더링 하는 실습을 진행합니다.

디자이너 ⇨ 개발자 프로세스

DOM API ➕ ES 6+

HTML 하드 코딩 대신, DOM 표준 API를 사용해 동적으로 업로드 버튼 컴포넌트를 브라우저 화면에 렌더링 해봅니다.

API

설명

요소 노드 생성

텍스트 노드 생성

요소 노드 속성 쓰기

요소 노드 속성 읽기

커스텀 속성 읽기/쓰기

class 속성 읽기/쓰기

노드의 마지막 자식 노드로 삽입

노드의 특정 위치에 (형제 또는 자식) 노드 삽입

노드에 이벤트 리스너 연결

노드에 연결된 이벤트 리스너 제거

숙련도 설문 결과

오리엔테이션 설문 ES 6+, ES Next 숙련도 설문 결과입니다.

라이브 예제

커스텀 DOM 모듈

커스텀 DOM 모듈을 사용해 업로드 버튼 컴포넌트를 브라우저 화면에 렌더링 합니다.

// ------------------------------------------------------
// 버튼 요소 노드 생성

const uploadPendingButton = DOM.createElement(
  // 요소 이름 (string)
  'button',
  // 요소 속성 (object)
  {
    type: 'button',
    className: 'button button__upload button--pending',
    onClick() { console.log('파일을 업로드 중입니다...') },
  },
  // 요소의 자식들 (children[])
  '업로드 중',
  // ...
)


// ------------------------------------------------------
// DOM 렌더링

DOM.render(
  // 프로그래밍 방식으로 생성 된 요소 노드
  uploadPendingButton,
  // HTML 문서에 하드 코딩 된 실제 DOM 요소 노드
  document.getElementById('root')
)

라이브 예제

클래스 프로그래밍

UploadButton 클래스(class)를 작성해 다음과 같은 API로 작동되도록 구현해봅니다.

import DOM from './modules/DOM'
import UploadButton from './components/UploadButton'

// -----------------------------------------------------------------

const uploadButton = new UploadButton({
  status: 'pending'
})

// -----------------------------------------------------------------

function render() {
  DOM.render(uploadButton.render(), document.getElementById('root'))
}

라이브 예제

Last updated

Was this helpful?