React
는 JavaScript
객체 형태의 Virtual DOM
을 사용하여 어플리케이션의 성능을 향상프레임워크
인 Vue
와 다르게 컴포넌트
기반의 라이브러리
간편한 UI 수정과 재사용의 용이함
서버사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR) 둘다 지원
많은 사이트에서 사용중.
상위 1만개 사이트 중 약 44%가 react
를 사용한다고 함
JavaScript 라이브러리
이기 때문에 JavaScript
의 배경지식이 필요
Document Object Model
HTML
및 XML
문서를 위한 프로그래밍 인터페이스
웹 페이지를 이루는 태그들을 JavaScript
가 이용할 수 있도록 브라우저가 트리구조로 만든 객체 모델
DOM
은 HTML
과 JavaScript
를 서로 이어주는 역할
DOM
에서의 속도적인 부분과 개발자의 노고를 개선하기 위해 탄생
html
마크업을 시각적인 형태로 변환하는 시간을 최소한의 DOM
조작을 통해 작업을 처리
특정 페이지에 데이터가 변했을 때, react
가 DOM
을 업데이트 시키는 절차는 다음과 같음
변화된 데이터를 포함한 버전을 가상돔으로 바꿈
가상돔끼리 비교
실제로 바뀐 부분만 적용
const element = <h1>Hello, world!</h1>;
위와 같은 희한한 태그 문법이 JSX
JSX
는 javaScript
의 확장 문법으로 XML
과 비슷하게 생겼다
react
는 별도의 파일에 마크업과 로직을 넣어 기술을 인위적으로 분리하는 대신, 둘 다 포함하는 컴포넌트
라고 부르는 느슨하게 연결된 유닛으로 관심사를 분리
JSX
를 사용하지 않은 코드
function App(){
return React.createElement("div", null, "Hello");
}
JSX
를 사용하면 다음과 같이 바뀐다function App(){
return (
<div>Hello</div>
);
}
Virtual DOM
에서 컴포넌트 변화를 감지할 때 효율적으로 비교할 수 있도록 하기 위함JSX
내부에 코드를 { }
로 감싼다면 표현식 작성 가능function App(){
const name = 'react';
return(
<div>Hello! {name}</div> // 여기
);
}
JSX
내부 표현식에서 if
문을 사용할 수 없기 때문에
JSX
밖에서 사전 값을 설정하거나, 조건부 연산자(삼항 연산자) 사용
react
컴포넌트 함수에서undefined
만 반환하여 렌더링 금지
x.y.z
형태로 표기
치명적인 버그를 수정할 때는 z
번호의 변경
새로운 기능을 출시하거나 치명적이지 않은 버그의 수정은 y
번호의 변경
호환성이 유지되지 않는 변경이 있을 때는 x
번호 변경하여 배포
나는 17.0.2
버전을 사용