๐ย Reference
๐ย Chapter
โฃ
<Profiler>๋ฅผ ํตํด React ํธ๋ฆฌ์ ๋ ๋๋ง ์ฑ๋ฅ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ธก์ ํ ์ ์๋ค.<Profiler> API (์ฝ๋ ๊ธฐ๋ฐ)์ฝ๋ ๋ด์์ ํน์ ๋ถ๋ถ์ ์ฑ๋ฅ ์ ๋ณด๋ฅผ ์ง์ ์์งํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
์ฌ์ฉ๋ฒ
<Profiler> ์ปดํฌ๋ํธ๋ก ์ธก์ ํ๊ณ ์ ํ๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ฅผ ๊ฐ์ธ๋ฉด ๋๋ค. ๋ ๊ฐ์ ํ์ props๊ฐ ํ์ํ๋ค.
id: ์ธก์ ๋จ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ณ ์ ํ ์ด๋ฆonRender: ๋ ๋๋ง์ด ์๋ฃ(commit)๋ ๋๋ง๋ค ์คํ๋ ์ฝ๋ฐฑ ํจ์import { Profiler } from 'react';
function Navigation() {
const onRenderCallback = (
id, // ๋ฐฉ๊ธ ์ปค๋ฐ๋ Profiler ํธ๋ฆฌ์ "id"
phase, // "mount" (์ต์ด ๋ ๋๋ง) ๋๋ "update" (๋ฆฌ๋ ๋๋ง)
actualDuration, // ํ์ฌ ์
๋ฐ์ดํธ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ
baseDuration, // ๋ฉ๋ชจ์ด์ ์ด์
์์ด ์ ์ฒด ํธ๋ฆฌ๋ฅผ ๋ ๋๋งํ์ ๋์ ์์ ์๊ฐ
startTime, // ๋ ๋๋ง์ ์์ํ ์๊ฐ
commitTime, // ๋ ๋๋ง์ด ์๋ฃ๋ ์๊ฐ
) => {
// ์ธก์ ๋ฐ์ดํฐ๋ฅผ ๋ก๊ทธ๋ก ๋จ๊ธฐ๊ฑฐ๋ ์๋ฒ๋ก ์ ์กํ ์ ์์ต๋๋ค.
console.log(`${id} [${phase}]: ${actualDuration}ms`);
};
return (
<Profiler id="Navigation" onRender={onRenderCallback}>
<MyHeader />
</Profiler>
);
}