티스토리 뷰

벨로퍼트와 함께하는 모던 리액트

  • 벨로퍼트와 함께하는 모던 리액트: https://react.vlpt.us/
  • 진도
    - 1.1. 리액트는 어쩌다가 만들어졌을까?
    - 1.2. 작업환경 준비
    - 1.3. 나의 첫 번째 리액트 컴포넌트
    - 1.4. JSX

 

💬 리액트는 어쩌다가 만들어졌을까?

  • 프로젝트의 규모가 커질수록 DOM을 직접 건드리면서 작업을 진행하기 어려움이 있다
    - 코드가 난잡해지고, 이로 인해 유지보수가 어려워진다
  • 위와 같은 이유로 Ember, Backbone, AngularJS 등의 프레임워크가 만들어졌다
  • 이러한 프레임워크는 특정 값이 변경될 때, 특정 DOM의 속성이 바뀌도록 연결을 해주어서 업데이트 과정을 간소화한다
  • 반면 리액트는 상태에 따른 업데이트가 아니라 처음부터 모든 걸 새로 만들어 준다는 발상에서부터 시작했다
  • 처음부터 새롭게 만들기 때문에, 업데이트에 대한 이슈가 발생하지 않는다
  • 다만 정말 모든 UI를 새롭게 만들게 되면 속도가 굉장히 느려지므로, Virtual DOM이라는 개념을 도입한다

 

💬 Virtual Dom

  • 메모리상에 가상으로 존재하는 DOM으로, 실제로 브라우저에서 DOM을 보여주는 것보다 빠른 속도를 자랑한다
  • 리액트는 상태가 업데이트 되면, 업데이트가 필요한 UI를 Virtual Dom을 통해 렌더링 한다
  • 그리고 알고리즘에 실제 브라우저의 DOM과 비교한 후, Virtual Dom을 패치한다
  • 이러한 방법으로 리액트는 빠른 성능을 자랑한다

 

💬 작업환경 준비

  • Node.js yarn Code Editor Git bash를 설치한다
    - yarn: 설치할 때 터미널에서 brew install yarn 명령어를 사용한다
  • 터미널을 열어 $ npx create-react-app begin-react 명령어를 실행하여 새로운 리액트 프로젝트를 만든다
  • begin-react라는 디렉터리가 생기고 그 안에 리액트 프로젝트가 생성된다
  • cd명령어를 사용해 해당 디렉터리에 들어가 yarn start를 입력한다
  • 리액트의 기본 포트는 3000이므로, 브라우저가 자동 실행되지 않는다면 직접 localhost:3000으로 접속해 확인한다
  • 프로젝트의 run상태를 종료할 때는 Ctrl+C를 누른다

 

💬  첫 번째 리액트 컴포넌트

// Hello.js
import React from 'react'; // 리액트 컴포넌트를 불러오기위해 import

function Hello(){
  return <h1>Hello World</h1>
}

export default Hello; // HEllo 컴포넌트를 export
  • VSCode에서 src 디렉터리에 Hello.js 파일을 생성하고 작성한다
  • 리액트 컴포넌트는 함수 형태, 클래스 형태로 작성할 수 있다. 지금은 함수 형태로 작성하는 방법을 알아보자
  • 리액트 컴포넌트에서는 XML 형식의 값을 반환해줄 수 있는데 이를 JSX라고 부른다

 

// App.js
import React from 'react';
import Hello from './Hello';

function App(){
  return(
    <div>
      <Hello />
      <Hello />
      <Hello />
    </div>
  );
}

export default App;
  • 앞서 export 했던 Hello 컴포넌트를 import해오면 XML의 형태(<Hello />)로 사용할 수 있다

 

// index.js
import React from 'react'; // ReactComponent 사용을 위한 import
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

// 브라우저에 있는 실제 Dom의 내부에 리액트 컴포넌트를 렌더링한다
ReactDOM.render(, document.getElementById('root'));

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: <https://bit.ly/CRA-PWA>
serviceWorker.unregister();
  • ReactDOM.render(): 브라우저에 있는 실제 Dom의 내부에 리액트 컴포넌트를 렌더링 한다
  • document.getElementById('root')로 선택한 DOM은 public/index.html 에서 확인할 수 있다
  • 결국, 리액트 컴포넌트를 렌더링 한 결과는 #root의 내부에 렌더링 된다

 

'FrontEnd > React' 카테고리의 다른 글

[React] 03. props  (0) 2022.05.06
[React] 02. JSX  (0) 2022.05.04
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday