# React란 ?

김하은·2022년 7월 21일
0

React

목록 보기
1/13
post-thumbnail

React란 ?

서론)

네이버 페이지 구현 하라고 하면 어떻게 할까?
네이버 페이지를 html로 구현하라고 하면 복잡함.
근데 이제 페이지 하나를 쪼개서 만들고 레고처럼 조립할꺼임 다 따로다로
헤드 따로 푸터 따로 왼쪽 따로 오른쪽 따로 만든다.
백엔드 데이터도 따로 뿌리는것 을 나눠서 할수 있다.


본론)

리액트의 배경

  • ReactJS란?
    복잡한 UI 구조를 레고단위로 쪼개서 조립하게 만들게 하는 자바스크립트
    라이브러리.
    각각의 독립적인 컴포넌트 (하나의 기능을 하는 코드 덩어리) 단위들을
    서로 조립하여 만드는것
  • 리액트 전용 문법
    <JSX 문법> => react 에서 사용하는 문법.

라이브러리 ( 🏛도서관 = 📖책들의 집합)

-모든 코딩을 직접 하기에는 무리가 있고 비 효율적

-따라서 짜놓은 코드를 가져다가 사용

(라이브 러리 vs 프레임 워크 비교)


리액트 핵심 컨셉( 특징 )

1.re-render와 components 기반

👉 rendering?

사용자가 화면에 view를 보여 주는 것을 렌더링이라고 한다.

👉re-rendering?

사용자 화면에 view를 다시 새롭게 보여준다는 의미이다.

👉components ?

-한가지의 기능을 수행하는 UI 단위

-컴포넌트는 DOM TREE 처럼 Virtual Dom Tree 라는 가상의 돔트리 형식으로
만들어진다.


  component 는 state / props 를 가진다.

▶Props

-부모 컨포넌트에서 자식 컨포넌트로 전달해 주는 데이터

-읽기 전용 데이터(데이터 변경 불가능)

-Component에 전달

▶State

-컴포넌트 내부에서 값을 저장하거나 변경할 수 있는 데이터

-동적인 데이터 (데이터 변경 가능)

-Component안에서 관리 .


🎈SPA

-HTML 이 하나이다. 페이지 하나. 페이지만 바꿔치기 해줌

🎈MPA

-HTML이 여러개.

🎈SSR ( MPA)가 지원하는 방식

-server side rendering
( next JS) > 리액트 기반드로 만들어짐

-서버사이드 렌더링의 약자로 서버로부터 완전하게 만들어진 html파일을 받아와 페이지 전체를 렌더링 하는 방식

‼‼문제점‼‼

로그인이 되어있는데 로그인이 되어 있지 않은 상태로 보여준다.


2. Virtual Dom( 가상돔) 기반

-React 가 가진 가상의 돔트리, Dom Tree 의 복사본

DOM Tree 생성

브라우저가 HTML 을 전달받으면, 브라우저의 렌더 엔진이 이를 파싱하고 DOM 노드(Node) 로 이뤄진 트리를 만든다. 각 노드는 각 HTML 엘리먼트들과 연관되어있음.

Render Tree 생성

외부 CSS 파일과 각 엘리먼트의 inline 스타일을 파싱한다.

스타일 정보를 사용하여 DOM 트리에 따라 새로운 트리, 렌더트리를 만든다.

🎈노드 스타일에 관하여🎈

👉노드의 스타일을 처리하는 과정을 ‘attachment’ .

DOM 트리의 모든 노드들은 ‘attach’ 라는 메소드가 있다.

👉 (attach )메소드는 스타일 정보를 계산해서 객체형태로 반환한다.

👉 이 과정은 동기적(synchronous) 작업,

DOM 트리에 새로운 노드가 추가되면 그 노드의 attach 메소드가 실행된다.

따라, 렌더 트리를 만드는 과정에선, 각 요소들의 스타일이 계산되고 , 또 이 계산되는 과정에서 다른 요소들의 스타일 속성들을 참조한다.

Layout

렌더 트리가 다 만들어지고 나면, 레이아웃 과정을 거친다.

각 노드들은 스크린의 좌표가 주어지고, 정확히 어디에 나타나야 할 지 위치가 주어짐.

Painting

그 다음 작업은 렌더링 된 요소들에 색을 입히는 과정.

트리의 각 노드들을 거쳐가면서 paint() 메소드를 호출. 후에, 스크린에 원하는 정보가 나타나는것.

최종 정리

💥문제점 : DOM의 조작 문제는 30개의 노드를 하나하나 수정하면, 30번의 레이아웃 재계산과, 30번의 (잠재적)리엔더딩을 초래함💥

따라 ,

🟣Virtual DOM = DOM 차원에서의 더블 버퍼링

변화가 일어나면 그걸 오프라인 DOM 트리에 적용시킴.

렌더링 ㄴㄴ, 연산 비용이 적어요.

연산이 끝나고나면 그 최종적인 변화를 실제 DOM 에 던져줌

딱 한번. 모든 변화를 하나로 묶어서. 연산의 횟수를 줄이는것.

관리하는 과정을 수동으로 하나하나 작업 할 필요 없이, 자동화하고 추상화 변화된 값이 있으면 자동으로 업데이트를 해줌🟣


3. JSX

const element = <h1>Hello, world!</h1>;

React에서는 본질적으로 렌더링 로직이 UI 로직(이벤트가 처리되는 방식, 시간에 따라 state가 변하는 방식, 화면에 표시하기 위해 데이터가 준비되는 방식 등)과 연결된다는 사실을 받아들임.

JSX에 표현식 포함하기

EX)

 name 이라는 변수를 선언한 후 중괄호로 감싸 JSX 안에 사용.

const name = 'Josh Perez';
const element = <h1>Hello, {name}</h1>;


ReactDOM.render(
  element,
  document.getElementById('root')
);
profile
꾸준함을 이기는것은 없다

0개의 댓글