반응이란 무엇입니까?

목차

1. 반응하다

2. 리액트의 특징

  • 가상 DOM
  • 단방향 데이터 바인딩
  • JSX
  • 선언적 프로그래밍
  • 구성 요소 기반

3. 수명주기 반응


1. 반응하다

  • 2013년 페이스북에서 개발 단일 페이지 애플리케이션(SPA)의 UI 생성에 중점을 둔 JavaScript 라이브러리입니다.

    도서관 (데이터가 지속적으로 변경되는 대규모 응용 프로그램을 만들기 위해)
  • Angular, Vue 등 타 프레임워크 및 라이브러리와 달리 react는 view만 담당 타사 라이브러리(redux, hook, router 등) 사용
  • react는 JavaScript 구문을 그대로 사용합니다(Angular 및 vue는 자체 구문이 있음).
  • 가상 DOM을 사용하여 기존 UI를 메모리에 저장하고 변경되는 최소 UI 집합을 계산하는 기술입니다.

    데이터가 크고 복잡할 때 브라우저 성능을 향상시킵니다.

2. 리액트의 특징

1⃣ 가상 DOM

  • 웹 브라우저 렌더링


웹 브라우저 렌더링 프로세스

리액트의 가상 DOM을 이해하기 위해서는 웹 브라우저의 렌더링 과정을 이해할 필요가 있습니다.

  1. 서버에서 전달받은 리소스 스트림을 읽어오는 과정
  2. 웹 엔진의 HTML/XML 파서는 문서를 파싱하여 DOM Tree를 생성하고, CSS 파서는 CSSOM Tree를 생성합니다.

    (첨부 사진의 Style Rule) 생성된 DOM Tree + CSSOM Tree는 렌더링에 필요한 노드만
  3. 렌더 트리를 기반으로 그려질 노드와 스타일의 크기 계산 객체로 반환
  4. 부착 과정을 거친 후 레이아웃 과정을 거친다.

    이 레이아웃 프로세스 중에 브라우저는 렌더링 트리의 각 노드에 좌표를 할당하고 표시되는 위치와 방법을 정확하게 결정합니다.

  5. 렌더 트리의 각 노드를 실제 픽셀로 변환(실제로 그리는 행위)

JavaScript를 이용하여 DOM을 조작할 때 각 노드의 좌표를 계산하기 위한 레이아웃(Reflow)과 색상을 적용하기 위한 페인트(Repaint) 과정이 다시 진행됩니다.

Reflow와 Repaint는 DOM의 각 노드에서 다시 작업을 수행하므로 이 프로세스를 많이 수행할수록 웹 서비스의 성능이 저하됩니다.

  • React는 이 리플로우 및 리페인트 문제를 해결하기 위해 가상 DOM을 만들었습니다.

  • 화면에 표시되는 DOM과 동일한 DOM을 메모리에 생성하고, DOM 조작이 발생하면 메모리에 생성된 가상 DOM에 모든 작업을 수행한 후 실제 DOM을 업데이트하여 Reflow/Repaint 작업을 최소화합니다.


가상 DOM 예

2⃣ 단방향 데이터 바인딩

  • React는 일반적으로 상태를 관리할 때 props를 통해 부모에서 자식으로 데이터를 전달합니다.

    데이터 흐름을 명확하게 볼 수 있습니다.

  • 자식에서 입력 데이터를 이벤트로 올려서 상태를 변경할 수 있습니다.

  • Angular와 Vue는 양방향입니다.

참조: https://gitnyang.67

3⃣ JSX

  • JavaScript의 확장 구문이며 JavaScript와 HTML의 조합처럼 보입니다.

  • JavaScript가 인식할 수 없는 구문이므로 Babel이라는 패키지를 사용하여 변환해야 합니다.

  • HTML 태그를 그대로 사용하기 때문에 친숙하며, HTML 마크업과 자바스크립트 로직을 함께 구현할 수 있습니다.

  • HTML은 자바스크립트 구문을 이용하여 생성할 수 있으며, UI는 기존 DOM+Event 방식보다 훨씬 편리하게 구성할 수 있습니다.

    존재했다



4⃣ 선언적 프로그래밍

  • 명령형 프로그래밍 방법에 집중하다
  • “김포공항 앞 사거리에서 좌회전하여 국내선 도착층 앞을 지나 항공박물관 방향 A게이트로 진입하여 B게이트 방향으로 이동합니다.


  • 선언적 프로그래밍 무엇에 집중
  • “강서구 하늘길 210 국제화물터미널 B게이트로 가주세요.”


5⃣ 컴포넌트 기반

  • 각각의 독립적인 모듈 재사용 가능 개발 생산성 향상
  • 클래스 컴포넌트


  • 기능 구성 요소


3. react의 생명주기


– 컴포넌트가 처음 실행될 때 마운트된 것으로 표현

– 구성 요소가 시작될 때 컨텍스트, defaultProps 및 상태 저장 constructor()

– 렌더링 후() componentDidMount() DOM 노드가 있어야 하는 초기화 작업입니다.

외부에서 데이터를 가져와야 하는 경우 여기가 네트워크 요청을 보내기에 적합한 위치입니다.

  • 소품 및 상태 업데이트

– 소품 또는 상태가 변경되면 업데이트가 발생합니다.

shouldComponentUpdate()반응이 현재 상태 또는 소품의 변경 사항이 구성 요소의 출력에 영향을 미치는지 여부를 알 수 있습니다(기본값 true) this.props그리고 nextProps그리고 이.상태그리고 다음 상태비교 후 거짓반품

componentDidUpdate()업데이트가 발생한 직후에 호출됩니다.

  • 언마운트

– 컴포넌트가 DOM에서 제거될 때 사용

componentWillUnmount()구성 요소가 마운트 해제되고 제거되기 직전에 호출됩니다.

타이머 제거, 네트워크 요청 취소,
componentDidMount() 내에서 생성된 구독 취소와 같은 필요한 정리를 수행하십시오.


시계 프로그램

원천

https://hymndev.45

https://dev-yakuza.posstree.com/ko/react/create-react-app/react/#%EA%B0%80%EC%83%81-%EB%8F%94

https://codepen.io/gaearon/pen/amqdNr?editors=0010

https://ko.reactjs.org/docs/react-component.html