2. 첫번째 프로젝트 만들기

자, 한번 첫번째 리액트 프로젝트를 만들어봅시다! 나중에는 여러분들의 컴퓨터에서 직접 프로젝트를 구성해보고, 여러분이 좋아하는 에디터로 코드도 에디팅 해볼텐데요, 지금 단계에서는 CodeSandbox 라는 아주 멋진 웹 IDE 를 사용하여 리액트를 학습해보도록 하겠습니다.

다음 링크에 들어가주세요: http://bit.ly/reactprj

위 링크에 들어가면 이미 사전에 준비된 리액트 프로젝트를 열 수 있습니다. 이 프로젝트에 들어있는 App.js 파일을 보시면 다음과 같은 코드가 있습니다.

https://codesandbox.io/ 에 들어가서 파란색 큐브를 선택하여 리액트 프로젝트를 생성하실수도 있습니다. 하지만 CodeSandbox 의 기본 리액트 템플릿 프로젝트에서는 하나의 index.js 파일에 모든 코드가 다 들어가있으므로 강의에서는 편의상 미리 분리시켜놓은 프로젝트 링크를 사용하겠습니다.

우선 App.js 를 열어보세요.

import React, { Component } from 'react';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        <h1>안녕하세요 리액트</h1>
      </div>
    );
  }
}

export default App;

이는 App 이라는 컴포넌트 입니다.

컴포넌트

컴포넌트는 재사용가능한 UI (유저인터페이스) 입니다. 이는 단순 템플릿 이상의 구현체로서, UI 개발에 필요한 필수적인 기능들이 탑재되어있습니다. 주요 기능들은 다음과 같습니다.

  • UI 의 생김새를 정의합니다
  • 부모에게서 값을 받아와서 적당한곳에서 보여주거나, 사용합니다.
  • 자기 자신이 사용 할 값을 정의하고 필요할 때 업데이트합니다.
  • UI 에서 보여줘야하는 값이 바뀌면 DOM 에 변화를 줍니다.

class

컴포넌트를 작성할땐 위와같이 class 라는 ES6 라는 문법을 사용합니다.

컴포넌트는 class가 아닌 함수형태로도 작성할 수 있는데 이에 대해선 나중에 알아보겠습니다.

ES6 의 class 는 객체 생성 및 상속을 더욱 쉬운 문법으로 구현 할 수 있게 해줍니다.

class Dog {
  constructor(nickname) {
    this.nickname = nickname;
  }
  bark() {
    console.log('멍멍!');
  }
  showName() {
    console.log(this.nickname);
  }
}

const dog = new Dog('멍뭉이');
dog.bark();
dog.showName();

class Husky extends Dog {
  constructor(nickname) {
    super(nickname); // Dog 의 constructor 를 호출
    // 다른거 하고 싶은거 있으면.. 여기서 더 입력
    // 하고싶은거 따로 없다면 constructor 를 생략해도됨
  }
  howl() {
    console.log('아우우우~~');
  }
}

const husky = new Husky('허스키');
husky.howl();
husky.showName();

Edit x7jlx9r9w

class 로 만든 리액트 컴포넌트

클래스 문법을 사용하여 만든 컴포넌트에는, render 라는 함수가 있습니다.

  render() {
    return (
      <div className="App">
        <h1>안녕하세요 리액트</h1>
      </div>
    );
  }

return 함수는 컴포넌트의 생김새를 정의하는 곳입니다. 여기서 return 하는 내용이 화면에 렌더링됩니다.

보시면 HTML 같은 문법이 있는데.. 이는 JSX 라고 하는데 다음 섹션에서 더 자세히 알아보겠습니다.

이제 코드의 위 쪽을 보면 이렇게 있을텐데요,

import React, { Component } from 'react';
import './App.css';

첫번째 줄은 라이브러리로 설치되어있는 리액트를 불러와서 사용하겠다는 의미입니다.

두번째 줄은 이 프로젝트에 특정 css 파일을 적용하겠다는 의미입니다.

이번엔 index.js 를 열어볼까요?

import React from 'react';
import { render } from 'react-dom';
import App from './App';

render(<App />, document.getElementById('root'));

여기서는 우리가 아까 봤던 App 을 불러와서 root 라는 엘리먼트에 렌더링해주고 있습니다. 여기서 사용된 react-dom의 render 함수는 실제 DOM 에 리액트 컴포넌트를 그려줍니다.

이 DOM 은 어디에 있는거냐 하면요, public/index.html 을 열어보시면 찾으실 수 있습니다.

body 태그 안에 다음과 같은 엘리먼트가 있는데

<div id="root"></div>

자바스크립트상에서 id 를 사용하여 위 DOM 을 선택하고 여기에 렌더링된 결과물을 넣어주는 작업이 현재 진행되고 있는 것입니다.

results matching ""

    No results matching ""