Roen의 iOS 개발로그

React 기초1 : React란?, 컴포넌트의 정의, JSX

by Steady On

📣 이 자료는 Udemy의 React 완벽 가이드 강의와 React 공식문서를 참고하여 작성되었습니다.

그리고 개인적으로 공부하고 이해한 내용을 바탕으로 정리하는 용도로 작성되었으므로 이해를 돕기위한 예시는 최소화하였습니다.

 

React : UI를 구축하는 JS 라이브러리

  • 리액트는 여러 함수로 코드를 분리하고 해석하여 여러개의 컴포넌트로 나눠놓고, 우리가 필요할 때 짜맞춰서 전체 UI를 구축하는 것이다. 
  • HTML/CSS & JS보다 좀 더 간단히 구축가능
  • 리액트가 하는 일은 실제 웹페이지에서 어떤 컴포넌트를 '추가, 업데이트, 삭제' 하는 것

 

컴포넌트

: 여러 개의 함수, 명령들을 모아 하나의 특정한 기능을 수행할 수 있도록 구성한 작은 기능적 단위

  • 모듈이라고도 부른다.
  • 컴포넌트의 장점
    • 재사용 가능 - 반복을 피할 수 있게 해줌
    • 우려사항 분리 가능
  • 코드베이스를 작고 관리 가능한 단위로 유지하여 유지보수가 쉽게 만들어준다.
  • 각각의 컴포넌트는 하나의 명확한 과제와 초점에 대해서만 집중한다.
  • 컴포넌트는 함수로 정의되고, 반드시 단 하나의 return 값을 가진다.

 

리액트의 특징 : 선언적 접근방식

  • 항상 원하는 최종 상태, 즉 목표 상태 또는 다양한 상황에 따라 다른 목표 상태를 정의하는 것이 아주 중요
  • 컴포넌트는 결국 하나의 함수이고, html 코드를 return 해서 그 함수를 불러오면 해당 html이 화면에 나타나도록 하는 것
  • 그래서 이 컴포넌트가 결과적으로 어떻게 보여지도록 할 것인지가 중요하다는 것
  • 미리 다 만들어놓기 때문에 선언적 방식이라고 함

 

리액트 프로젝트를 시작하는 방법

프로젝트를 만들고자 하는 폴더에서 yarn create react-app 프로젝트명이라고 터미널에 명령어를 써주면, 프로젝트 폴더가 만들어지면서 기본 세팅이 된다. 그리고 해당 폴더로 이동해서 yarn start 하면 리액트 프로젝트가 구동되면서 브라우저에서 실시간을 변경사항을 확인 가능하다.

 

리액트 프로젝트 : 구성요소1. index.js

  • localhost:3000에 접속할 때, 최초로 실행되는 파일. 
// index.js
import ReactDOM from 'react-dom/client'; //ReactDOM 라이브러리 불러오기

import './index.css';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
/* ReacdDOM 객체를 가져와서 createRoot 메소드 실행
   root라는 ID를 가진 요소를 선택해서 이 태그가 React 애플리케이션의 루트라는 것을 설정한다는 뜻
   메인 React 애플리케이션이 렌더링 되는 곳이다.
   ../public/index.html을 열어보면 정규 html 태그가 작성되어 있고 
   <body>태그 안에는 <div id='root'></div> 밖에 없다. 이 div 태그 안에서 렌더링이 이루어진다. */
   
root.render(<App />);
/* 루트 객체에 div 태그 안에 뭘 렌더링 하라고 알려주는 코드
   <App /> 언뜻 보기에 html코드와 유사하게 생겼다. 이런걸 JSX라고 부른다. */

* JSX란?

JavaScript XML(eXtensible Markup Language)

 * XML : 다른 특수한 목적을 갖는 마크업 언어*를 만드는데 사용하도록 권장하는 다목적 마크업 언어

 * 마크업 언어 : 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지 ex) HTML

  • JavaScript를 확장한 문법
  • JSX는 React 엘리먼트를 생성한다.(엘리먼트(element)는 컴포넌트의 '구성요소'이다.)
    - 원래는 React.createElement()라는 React 객체의 createElement라는 메소드로 각각의 엘리먼트들을 만들어줬는데, 그걸 좀 더 편하게 읽고 쓸 수 있도록 만들어진게 JSX이다.
  • 리액트는 이 JSX로 쓰여진 코드를 변환해서 리액트 DOM에 렌더링한다. (rendering은 화면에 쓴다는 말!)
  • 예전에는 JSX를 쓰기위해서는 모든 컴포넌트 파일마다 React를 import 해줘야 했지만, 지금은 자동으로 되기때문에 import React는 더이상 쓰지 않아도 된다.
  • JSX에서는 JS의 클래스를 만드는 Class 키워드와의 충돌을 피하기 위해서 엘리먼트의 class를 className으로 표기한다.
  • 또 각 엘리먼트에서 어디서든지 JS의 코드나 변수명 등을 삽입하고 싶을 때는 {, } 를 사용한다.

 

마무리

리액트 프로젝트 내에서 작성된 코드들은 yarn start 프로세스가 실행되면, 코드를 확인하고 브라우저로 데려가진다. 그리고 브라우저 내에서 코드를 변환해서 화면을 작성하고, 브라우저에 보여준다. 이 변환된 코드들은 브라우저의 개발자 도구-[소스] 탭에서 확인 가능하다. 

 

 

 

 

블로그의 정보

Roen의 iOS 개발로그

Steady On

활동하기