React를 사용하면마크업, CSS 및 JavaScript를 앱의 재사용 가능한 UI 요소인 사용자 지정 "component" 로 결합할 수 있다.
JSX는 JavaScript 파일 내에서 HTML과 유사한 마크업을 작성할 수 있는 JavaScript용 구문 확장이다. 기존의 경우 콘텐츠를 HTML로 디자인을 CSS로 로직을 JavaScript로 별도의 파일에 보관하였다. 그러나 웹이 점점 더 상호작용하게 되면서 논리가 점점 더 콘텐츠를 결정했다. 그렇기에 React에서는 렌더링 논리와 마크업이 같은 위치, 즉 component에 함께 존재하게 구현한다.
형제 간에 항목을 고유하게 식별할 수 있게한다. 잘 선택된 키는 array내의 위치보다 더 많은 정보를 제공한다. 재정렬로 인해 위치가 변경되더라고 key React는 전체 수명 동안 항목을 식별할 수 있다.
React는 작성하는 모든 component가 순수 함수라고 가정한다. 즉 작성한 React component는 동일한 입력이 주어지면 항상 동일한 JSX를 반환해야 한다.
의도하지 않은 결과가 발생하는 경우
let guest = 0;
function Cup() {
// Bad: changing a preexisting variable!
guest = guest + 1;
return
export default function TeaSet() {
return (
<>
</>
);
}
이 component를 여러번 호출하면 다른 jsx가 생성된다.,
### StrictMode로 불순한 계산 감지
React는 렌더링하는 동안 세가지 유형의 입력(props, state, context)를 읽을 수 있다. StrictMode는 component를 두 번 호출함으로써 각 component가 순수한지 확인한다.
### React가 순수함을 중요하게 생각하는 이유
- component는 다른 환경에서 실행될 수 있다. 동일한 입력에 대해 동일한 결과를 반환하므로 하나의 구성 요소가 많은 사용자 요청을 처리할 수 있다
- 입력이 변경되지 않은 렌더링 component를 건너 뛰어 성능을 향상시킬 수 있다. 순수 함수는 항상 동일한 결과를 반환하므로 캐시하기에 안전하다
- 깊은 component tree를 렌더링하는 도중 일부 데이터가 변경되면 React는 오래된 렌더링을 완료하는 데 시간을 낭비하지 않고 렌더링을 다시 시작할 수 있다.