Profiler
id
: 문자열onRender
: 콜백 함수, React 트리 내 컴포넌트의 업데이트가 커밋되면 호출됨Profiler
는 기본적으로 development에서만 동작함// Create React App v3.2+ profiler 설치
yarn build --profile
npm run build -- --profile
render(
<App>
<Profiler id="Navigation" onRender={callback}>
<Navigation {...props} />
</Profiler>
<Main {...props} />
</App>
);
Profiler
컴포넌트를 사용하여 애플리케이션의 다른 부분들을 계산할 수 있음render(
<App>
<Profiler id="Navigation" onRender={callback}>
<Navigation {...props} />
</Profiler>
<Profiler id="Main" onRender={callback}>
<Main {...props} />
</Profiler>
</App>
);
Profiler
컴포넌트를 중첩하여 사용할 수 있음render(
<App>
<Profiler id="Panel" onRender={callback}>
<Panel {...props}>
<Profiler id="Content" onRender={callback}>
<Content {...props} />
</Profiler>
<Profiler id="PreviewPane" onRender={callback}>
<PreviewPane {...props} />
</Profiler>
</Panel>
</Profiler>
</App>
);
Tip
Profiler
를 사용하면 CPU와 메모리 비용이 추가되므로, 필요할 때만 사용해야함
onRender
콜백 함수Profiler
컴포넌트에 요구되는 propProfiler
트리 내의 컴포넌트에 업데이트가 커밋될 때마다 호출됨function onRenderCallback(
id, // 방금 커밋된 Profiler 트리의 "id"
phase, // "mount" (트리가 방금 마운트가 된 경우) 혹은 "update"(트리가 리렌더링된 경우)
actualDuration, // 커밋된 업데이트를 렌더링하는데 걸린 시간
baseDuration, // 메모이제이션 없이 하위 트리 전체를 렌더링하는데 걸리는 예상시간
startTime, // React가 언제 해당 업데이트를 렌더링하기 시작했는지
commitTime, // React가 해당 업데이트를 언제 커밋했는지
interactions // 이 업데이트에 해당하는 상호작용들의 집합
) {
// 렌더링 타이밍을 집합하거나 로그...
}
onRender
콜백 함수의 propsProfiler
트리의 id
propProfiler
와 자손 컴포넌트들을 렌더링하는데 걸리는 시간Profiler
트리 내 개별 컴포넌트들의 가장 최근에 렌더링하는데 걸린 시간Profiler
가 이 값을 공유하기 때문에 그룹화 가능함interaction
의 집합 (예: render
또는 setState
가 호출되었을 때)Tip
- interactions을 추적하는 API는 시험단계지만, 업데이트의 원인을 식별하는데 사용 가능함