๐Ÿ“šย Reference


๐Ÿ“œย Chapter


React ๊ฐœ๋ฐœ ๋„๊ตฌ

โ€ฃ

devtool

Profiler


์‚ฌ์šฉ


React Developer Tools์˜ Profiler (์‹œ๊ฐ์  ๋„๊ตฌ)

<Profiler> API (์ฝ”๋“œ ๊ธฐ๋ฐ˜)

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>
  );
}