리액트는 자바스크립트의 라이브러리일까? 아니면 프레임워크일까...?
흠,,, 리액트를 만든 페이스북에서는 라이브러리라고 한다!!
리액트는 화면의 한부분을 컴포넌트라는 단위로 나누어 독립적으로 관리할수있다. 재사용성에 용이하다는 장점을 가진다
virtual DOM은 UI의 이상적인 또는 가상적인 표현을 메모리에 저장하고 ReactDOM과 같은 라이브러리에 의해 실제 DOM과 동기화하는 프로그래밍 개념. React에게 원하는 UI상태를 알려주면 DOM이 그 상태와 일치하도록 한다.
DOM(Document Object Model)은 XML/HTML 문서에 접근하기 위한 일종의 인터페이스.
DOM은 새로운 요청이 있으면
HTTP response > DOM TREE > CSSOM TREE > RENDER TREE > Painting
위와 같은 형태를 거쳐 리렌더링된다. DOM의 속도는 느리지 않지만 요청량이 많아지면 속도는 저하될것이다. 여기서 버츄얼돔의 장점이 나온다.
리액트는 버츄얼돔을 사용하여 실제 돔에 접근하여 접근하는 대신!! 추상화시킨 자바스크립트 객체를 구성하여 사용하게되는데 마치 실제 돔의 가벼운 사본과 비슷하다
리액트는 데이터가 변화여 브라우저에 실제 돔을 업데이트할때 세가지 절차가 있다
클래스 컴포넌트
함수형 컴포넌트
함수형 컴포넌트는 state와 라이프사이클 api를 사용하는것이 불가능한게 단점이었는데 hooks를 통해 해결되었다.
컴포넌트 속성을 설정할때 사용하는 요소다. props값은 해당 컴포넌트를 불러와 부모 컴포넌트에서 설정할수있음
컴포넌트 내부에서 바뀔수 있는 값을 의미한다. props는 컴포넌트가 사용되는 과정에서 부모 컴포넌트가 설정하는 값이며, 컴포넌트 자신은 해당 props를 읽기전용으로만 사용할수있다.
가끔 부모에게서 받은 props를 자식단계에서 부모단계로 전달하고싶을때도있다
이때는 Redux 글로벌 상태관리를 사용하자!
출처 : 프론트엔드 면접 질문 대비