참고 자료
[React 까보기 시리즈] React 구성요소인 reconciler, renderer 등의 내부 패키지 & fiver, rendering 등의 용어 정의
React Scheduler 코드 파해치기
React 레거시 공식 문서 - 합성 이벤트
React 레거시 공식 문서 - 재조정
https://goidle.github.io/react/in-depth-react-hooks_1/
createElement()
와 같은 함수가 정의되어 있다.react-dom
(웹), react-native-renderer
(모바일) 등 호스트에 따라 다른 패키지 사용reconciler
, legacy-events
패키지에 의존하고 있다.SyntheticEvent
라는 이름으로 내부적으로 개발된 이벤트 시스템SyntheticEvent
로 랩핑하여 같은 속성을 가지도록 표준화setState
직후 state를 출력하면 변경된 state 값이 아니라 기존 값이 출력되는 것을 통해 비동기 처리임을 알 수 있다)렌더링의 전체 과정은 다음과 같다.
즉 컴포넌트를 호출하여 받은 react element를 가상 DOM에 적용하는 과정까지가 렌더링이다.
babel
을 통해 react.createElement()
로 변환되어 호출한다.type
은 string 또는 ReactClass가 할당 됨props
는 object가 할당 됨className
, children
, value
등 태그의 속성과 자식 요소들이 할당// JSX
const DeleteAccount = () => {
<div>
<p>Are you sure?</p>
<DangerButton color="red">Yes</Dangerbutton>
</div>
}
// React Element
const DeleteAccount = () => ({
type: "div",
props: {
children: [{
type: "p",
props: {
children: "Are you sure?"
},
}, {
type: DangerButton,
props: {
color: "red",
children: "Yep"
}
}]
}
})
DangerButton
)가 올 수 있는데, 이 역시 다른 리액트 엘리먼트를 반환한다.function createElement(type, config, children) {
var propName; // Reserved names are extracted
var props = {};
var key = null;
var ref = null;
var self = null;
var source = null;
...
return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);