프로젝트 생성

  1. create-react-app 모듈을 글로벌로 설치합니다
npm install -g create-react-app
  1. create-react-app 명령어로 프로젝트를 생성합니다.
create-react-app 원하는이름
  1. 앱을 실행하고 localhost:3000에서 제대로 동작하는지 확인합니다.
npm start

컴포넌트 기본

React에서 가장 기초가 되는 개념은 컴포넌트 입니다. React는 '컴포넌트 기반 라이브러리'라고 소개되곤 하는데요, 이는 웹 페이지를 HTML 코드 하나로 생각하는게 아니라 여러 부분을 컴포넌트라는 단위로 분할해서 처리한다는 것을 의미합니다.

먼저 컴포넌트가 어떻게 생겼는지부터 느껴봅시다! 아래 코드는 제가 react 프로젝트 내 src/App.js 파일에 작성한 코드입니다.

import React from 'react';

class App extends React.Component {
  render() {
    return (
      <div className="App">
        <Compo />
      </div>
    );
  }
}

class Compo extends React.Component {
  render() {
    return (
      <div>
        <p> Compoent test! </p>
      </div>
    );
  }
}

export default App;

img

이 코드에는 App이라는 컴포넌트와, Compo라는 컴포넌트, 이렇게 두 개의 컴포넌트가 존재합니다. 그냥 딱 훑어 보았을 때 두 컴포넌트가 가지고있는 공통점을 찾아볼까요?

  1. class - extends React.Component의 형태를 띄고 있습니다.
  2. class 안에 render 메소드를 호출하고 있습니다.
  3. render 안에 return을 호출하고 있습니다.
  4. return 안에는 container element <div>로 감싸져 있는 무언가가 있습니다.

컴포넌트 변수 선언

위의 기본적인 컴포넌트 형태에서 조금만 더 내용을 추가한 예시를 살펴봅시다. 저는 return 내 html 내용에 변수를 삽입하고 싶었고, 아래와 같은 코드를 작성하였습니다.

import React from 'react';

class App extends React.Component {
  render() {
    return (
      <div className="App">
        <Compo />
      </div>
    );
  }
}

class Compo extends React.Component {
  render() {
    let text = 'Compoent test!';
    return (
      <div>
        <p> {text} </p>
      </div>
    );
  }
}

export default App;

Compo 클래스에 보면 let text.. 라는 내용이 있습니다. ES6 에서는 변수를 선언할 때 block scopelet을 사용하는 것을 권장합니다. 그래서 let을 사용하여 'Component test!'라는 변수를 먼저 선언해줬습니다. 그리고 변수를 return 내 html 코드에 사용하고 싶으면 위와 같이 중괄호 { } 를 사용하시면 됩니다.

props, props 타입 & state

컴포넌트 내 데이터를 처리하는 방법 중 가장 대표적인 것이 props와 state입니다. Props는 컴포넌트 내부의 변하지 않는 데이터를 처리할 때 사용하며, State는 변하는 동적인 데이터를 처리할 때 사용합니다. props의 타입을 검증해서 에러 발생을 줄이거나, 에러 로그를 띄울수 있도 있습니다.

  • this.props.이름: <Compo 이름 = "value"/> 의 형태로 사용합니다.
  • this.props.children: <Cmpo> value </Compo> 의 형태로 사용합니다.
  • defaultProps (기본값 설정): 컴포넌트 설정이 끝난 후 Comp.defaultProps = { 이름 : value } 의 형태로 사용합니다.
import React from 'react';

class App extends React.Component {
  render() {
    return (
      <div className="App">
        <Compo test="Hello world!"> Children test </Compo>
      </div>
    );
  }
}

class Compo extends React.Component {
  render() {
    return (
      <div>
        <p>propsName: {this.props.test}</p>
        <p>chiledren: {this.props.children}</p>
      </div>
    );
  }
}

export default App;
  • propTypes: 컴포넌트 설정이 끝난 후 Comp.propTypes = { 이름 : 타입 } 의 형태로 사용합니다.
Comp.propTypes = {
	value: React.PropTypes.string,
	secondeValue: React.PropTypes.number
	thirdValue: React.PropTypes.any.isRequired
}
  • this.state (렌더링 전): state는 초기값 설정이 필수입니다. constructor 안에서 this.state = { }으로 설정을 해주셔야 합니다.
  • this.setState (렌더링 후): state 값을 수정할 때는 this.setState({ ... })을 사용합니다.

Reference