meta(facebook)이 개발한 오픈소스 JavaScript라이브러리이고, 대규모 웹서비스의 UI를 더 편하게 개발하기 위해서 만들어진 기술이다React 로 만들어진 서비스로는 instagram facebook notion 등이 있다component 의 기반으로 UI를 표현한다
위 사진에서
HTML과CSS가 객체모델로 변환이 되면서 두개를 합친 것을Render Tree라고 하는데 웹페이지의 청사진 또는 설계도라고 불린다 다음으로는Layout작업인데 웹페이지라는 공간 안에Render Tree에 포함되어 있는 요소들의 배치를 잡아 보는 작업이다 마지막으로Painting작업에서는 실제로 화면에 그려내는 과정을 말한다
- DOM이 수정되면 브라우저는
Render Tree를 다시 생성하고,Layout을 다시 잡고Painting을 다시 진행한다.DOM을 수정하게 되서 다시 작업하는 걸Reflow(레이아웃을 다시한다),Repaint(페인팅을 다시한다)라고도 불린다 이 작업은 매우 오래 걸린다고 볼 수 있다
UI를 구성하는 요소를 말한다component 작명을 할 때 첫글자는 무조건 대문자로 적어주어야 한다 소문자로 적게 되면 React가 DOM으로 인식하기 때문에 오류난다Class component 와 Function component 방법이 있다 Class component 방법은 코드가 길어지기 때문에 보통은 Function component를 많이 사용한다
component를 사용하면 좋은 점
- 가독성이 좋아진다
- 재사용성이 높아진다
- 유지보수가 편리해진다
component retern바로 아래에는 감싸는 태그가 꼭 있어야 하고, 1개여야 한다class Header extends Component {
render() {
return (
<header>
<h1>header</h1>
</header>
);
}
}
function Footer() {
return (
<footer>
<h1>footer</h1>
</footer>
);
};
//화살표 함수로도 사용이 가능함
const Footer = () => {
return (
<footer>
<h1>footer</h1>
</footer>
);
};
요약하자면
React는 목적만 깔끔하게 명시하고, 명시 코드가 간결한선언형 프로그래밍을 사용한다
반면에JavaScript는 모든 과정을 하나하나 다 설명하기 때문에 코드가 길고 복잡하다
React는 component 단위로 나눠서 개발하게 되는데, 이때 각각의 component에는 현재 component의 상태를 저장 할 수 있는 state라는 특수한 변수가 있다
state의 값이 바뀌게 되면 바뀐 값에 따라서 각각 다른UI화면에 렌더링 하게 해줄 수 있다. 렌더링이란 웹페이지 화면에 UI요소를 그려내는 걸 말한다