프론트엔드 스택 중 하나인 JS 오픈소스 라이브러리.
기존의 DOM을 조작하는 JS 코드를 간소화하고자 가상돔을 이용한다.
가상돔이란 실제 DOM의 얕은 복사본으로서, 브라우저가 직접 DOM에 접근할 때보다 성능상의 부담을 줄여준다는 이점이 있다.
상태가 업데이트 되면 메모리의 가상돔에 다시 렌더링이 되고, 이전의 가상돔과 비교하여 차이나는 부분을 찾아 실제 돔에 적용하게 된다. 따라서 브라우저에 가해지는 부하가 줄어들게 되는 것이다.
리액트 프로그래밍 시에는 UI를 어떻게 보여줄지에 초점을 맞추어 코드를 작성한다.
JS 문법과 가장 비슷하고, 변경된 부분만 리렌더링이 되기 때문에 성능 저하될 일이 많이 없음
HTML없이, 모든 과정을 JSX문법으로 처리하기 때문에 더 간략하다.
선언형: 사용자가 쓰는 기능에 중점을 맞추어 개발한다. 즉 , 코드를 대강 보는 것만으로도 어떤 기능을 구현해야 하는지 충분히 알 수 있다(반대 개념으로는 명령형 프로그래밍이 있다)
범용성: 기존에 진행하던 프로젝트에도 손쉽게 적용이 가능하다. 리액트 네이티브로 모바일 앱도 만들 수 있다
컴포넌트 기반: 기능 단위로 구현한다. 하나의 기능과 구조 단위에 대한 코드를 컴포넌트라고 하는데, 이 컴포넌트들은 독립적인 관계에 있기 때문에 유지보수하기도 용이하고, 유닛테스트를 개발하기에 용이하다.
(컴포넌트들은 돔의 트리 구조처럼 계층 구조를 이룬다). 컴포넌트는 일종의 UI조각이다.
JSX는 javascript XML의 약어로, JS를 확장한 문법이다.