본문 바로가기
React/React 기본

[생활코딩] React - 리액트의 유용성 / 컴포넌트 만들기

by 닉우 2020. 7. 26.

<리액트의 유용성>

 

리액트가 없다고 가정했을때와 있을때를 비교하면서

리액트의 유용성을 느껴보자.

 

Public이라는 디렉토리는 우리가 create-react-app에서 yarn start를 했을때

파일을 찾는 다큐먼트 루트이다.

저 Public 디렉토리에  리액트가 아닌 html 코드를 짜보겠다. (리액트가 없다고 가정하기 위해)

 

 

<html>

<body>
    <header>
        <!-- 아무 기능은 없지만 본문이란것을 표시하기 위해 -->
        <h1>WEB</h1>
        world wide web!
    </header>

    <nav>
        <!-- 이것도 아무 기능은 없지만 의미론적으로는 네비게이션 -->
        <ul>
            <li><a href="1.html">HTML</a></li>
            <li><a href="2.html">CSS</a></li>
            <li><a href="3.html">JavaScript</a></li>
        </ul>
    </nav>
    <article>
        <h2>HTML</h2>
        HTML is HyperText Markup Language.
    </article>


</body>

</html>

이 정도 웹페이지는 우리가 관리하기 편할것이다.

그러나 각 코드부분이 천만줄이라고 상상해봤을때,

코드가 한눈에 안들어온다.

 

저 태그는 다른곳에 안보이게 감추고 이름만 <Subject></Subject>로 한다면 가독성이 좋아질것이다.

 


<컴포넌트 만들기>

 

아래 코드는 컴포넌트를 만드는 코드이다.

저 코드를 해석해보면 App이라는 class를 만들고,

리액트의 Component라고하는 리액트가 가지고 있는 class를 상속해서

새로운 class를 만드는거고, 그 class는 render()라고하는 메소드를 가지고 있는것.

 

 

Subject라고 하는 컴포넌트를 만들어서 아까 html의 헤더태그를 대체해보자.

주의할점은 항상 최상위 태그로 시작해야된다.

여기서는 헤더가 최상위 태그다.

하나의 최상위 태그만 써야된다.

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

class Subject extends Component {
  render() {
    return (
      <header>
        <h1>WEB</h1>
        world wide web!
      </header>
    );
  }

}

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

export default App;

App부분에 웹 브라우저가 알아들을수 있는  헤더 태그가 생겼다.

컴포넌트 이름에만 집중하게 함으로써 복잡도를 획기적으로 낮췄다.

 

마지막으로 완성된 HTML 과 리액트의 코드를 비교해보자.

<HTML>

<html>

<body>
    <header>
        <h1>WEB</h1>
        world wide web!
    </header>

    <nav>
        <ul>
            <li><a href="1.html">HTML</a></li>
            <li><a href="2.html">CSS</a></li>
            <li><a href="3.html">JavaScript</a></li>
        </ul>
    </nav>
    <article>
        <h2>HTML</h2>
        HTML is HyperText Markup Language.
    </article>


</body>

</html>

<React>

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

class Subject extends Component {
  render() {
    return (
      <header>
        <h1>WEB</h1>
        world wide web!
      </header>
    );
  }

}

class TOC extends Component {
  render() {
    return (
      <nav>
        <ul>
          <li><a href="1.html">HTML</a></li>
          <li><a href="2.html">CSS</a></li>
          <li><a href="3.html">JavaScript</a></li>
        </ul>
      </nav>
    );
  }
}
class Content extends Component {
  render() {
    return (
      <article>
        <h2>HTML</h2>
        HTML is HyperText Markup Language.
      </article>
    );
  }
}


class App extends Component {
  render() {
    return (
      <div className="App">
        <Subject></Subject>
        <TOC></TOC>
        <Content></Content>
      </div>
    );
  }
}

export default App;

 

 

 

 

 

 

※ 본 포스팅은 개인 공부 기록을 목적으로 남긴 글이며 본 사실과 다른 부분이 있다면 과감하게 지적 부탁드립니다.

댓글