๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ—‚ WIL/๐Ÿ“ React

๐Ÿ”จ React Dev Tools ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

by nalong 2024. 10. 27.

์š”์ฆ˜ ๊ฐœ๋ฐœ์ผ์ •์ด ํ”ฝ์Šค๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์ด ๋งŽ๋‹ค ๋ณด๋‹ˆ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด์Šˆ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ณผ์ •์— ์žˆ์–ด์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ.. ๋ฌธ๋“ ๋‚ด๊ฐ€ ๋””๋ฒ„๊น…์„ ์ž˜ํ•˜๋Š” ํŽธ์ด ์•„๋‹ˆ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ ..(์ฝ˜์†”๋กœ๊ทธ๋งŒ ๋ƒ…๋‹ค ๋งŽ์ด ์ฐ๋Š” ์‚ฌ๋žŒ + debugger๊ฐ€ ํŽธํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ = ๋‚˜) React Dev Tools์„ ์ž˜ ํ™œ์šฉํ•ด ๋ณด๊ธฐ ์œ„ํ•ด ๊ด€๋ จ ๋‚ด์šฉ๋“ค์„ ์ฐพ์•„์„œ ์ฝ๊ณ  ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค!  

 

๐Ÿ”ฅ React Dev Tools ์€ ํฌ๊ฒŒ Components ํƒญ๊ณผ Profiler ํƒญ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š”๋ฐ, Components ํƒญ ์—์„œ๋Š” ํ˜„์žฌ React ๊ตฌ์„ฑ ์š”์†Œ ํŠธ๋ฆฌ์™€ ๋ชจ๋“  props, state ๋˜๋Š” context๋ฅผ ํ‘œ์‹œํ•˜๊ณ , Profiler ํƒญ์—์„œ๋Š”  ์‚ฌ์šฉํ•˜๋ฉด ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ธฐ๋กํ•˜๊ณ  ๊ตฌ์„ฑ ์š”์†Œ ๋ Œ๋”๋ง์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

โš™๏ธ Settings

Profiler ํƒญ๊ณผ Components ํƒญ์—์„œ ์ง„์ž…ํ•˜๋Š” ์„ค์ •์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” Highlight! 
์ปดํฌ๋„ŒํŠธ๊ฐ€ re-rendering ๋  ๋•Œ๋งˆ๋‹ค ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ๊ณ„ ๋ถ€๋ถ„์„ ๊ฐ•์กฐ ํ‘œ์‹œํ•ด ์ฃผ๊ณ , ์ด๋•Œ ํŒŒ๋ž€์ƒ‰ < ์ดˆ๋ก์ƒ‰ < ๋…ธ๋ž€์ƒ‰ < ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ฆฌ๋ Œ๋”๋ง ๋นˆ๋„๊ฐ€ ๋†’์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ๋ณ„ํ•ด์„œ ํ‘œ์‹œํ•ด์ค€๋‹ค๊ณ  ํ•œ๋‹ค.  

 

1๏ธโƒฃ Components Tab

๐Ÿ”ฅ ์ปดํฌ๋„ŒํŠธ์˜ ๊ณ„์ธต ๊ตฌ์กฐ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค! 

์ปดํฌ๋„ŒํŠธ์˜ ๊ณ„์ธต ๊ตฌ์กฐ ํ™•์ธ ๋ฐ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•œ๋ฐ, ๋””ํดํŠธ๋กœ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค„ ๋•Œ  host components (e.g. <div>) ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆจ๊ฒจ์ ธ ์žˆ๋‹ค. ๋งŒ์•ฝ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์„ค์ • ๋ฉ”๋‰ด์—์„œ "host" ์œ ํ˜• ํ•„ํ„ฐ์˜ ์™ผ์ชฝ์— ์žˆ๋Š” ํ† ๊ธ€์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด host components๊นŒ์ง€ ๋ชจ๋‘ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค. 

๋˜ rendered by๋ฅผ ํ†ตํ•ด์„œ ์„ ํƒํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋“ค๋„ ๋ฐ”๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

๐Ÿ”ฅ ์ฝ˜์†”๋กœ๊ทธ ํ•„์š”์—†์ด ์ปดํฌ๋„ŒํŠธ์— ์žˆ๋Š” State, Props, hooks ํ™•์ธ ๋ฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค!

๊ถ๊ธˆํ•œ ์ปดํฌ๋„ŒํŠธ์˜ State, Props, hooks๋“ค์ด ๋ญ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋ณ€๊ฒฝ๋„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๋ฌผ๋ก  State, Props, hooks์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ๊ณ ์นจ ํ•  ํ•„์š” ์—†์ด ๋น ๋ฅด๊ฒŒ ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ์ปดํฌ๋„ŒํŠธ ๋ณ€ํ™”๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.๐Ÿฅน

 

 

 

๐Ÿ”ฅ Suspense๋กœ ์ปดํฌ๋„ŒํŠธ ๋กœ๋”ฉ ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

suspense ํ† ๊ธ€์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ๋กœ๋”ฉ ์ƒํƒœ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋กœ๋”ฉ ์ƒํƒœ์™€ ๋น„๋™๊ธฐ ์ž‘์—… ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

2๏ธโƒฃ Profiler Tab

Profiler ํƒญ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ์ปดํฌ๋„ŒํŠธ ๋ณ€ํ™”์™€ ๊ฐ ํ•ญ๋ชฉ์ด ๋ Œ๋”๋ง ๋œ ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฐจํŠธ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

์„ฑ๋Šฅ ๋ถ„์„์€ ๋‘ ๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„๋œ๋‹ค๊ณ  ํ•œ๋‹ค. 

  1. Render ๋‹จ๊ณ„: React๊ฐ€ ์–ด๋–ค ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋‹จ๊ณ„. ์ปดํฌ๋„ŒํŠธ์˜ render ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ด์ „ ๋ Œ๋”๋ง๊ณผ ๋น„๊ตํ•œ๋‹ค.
  2. Commit ๋‹จ๊ณ„: ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ค์ œ๋กœ ์ ์šฉํ•˜๋Š” ๋‹จ๊ณ„. React๋Š” DOM ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…, ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ œ๊ฑฐํ•˜๊ณ , componentDidMount ๋ฐ componentDidUpdate์™€ ๊ฐ™์€ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

1. Commit Chart

Profiler๋Š” ์ปค๋ฐ‹(Commit) ๋‹จ์œ„๋กœ ์„ฑ๋Šฅ ์ •๋ณด๋ฅผ ๊ทธ๋ฃน ํ•˜๋Š”๋ฐ, ์ƒ๋‹จ์˜ ์ปค๋ฐ‹ ์ฐจํŠธ์—๋Š” ๊ฐ ์ปค๋ฐ‹์˜ ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋˜๋ฉฐ, ์„ ํƒํ•œ ์ปค๋ฐ‹์€ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ๊ฐ•์กฐ๋œ๋‹ค. ๋ง‰๋Œ€์˜ ์ƒ‰์ƒ๊ณผ ๋†’์ด๋Š” ํ•ด๋‹น ์ปค๋ฐ‹์˜ ๋ Œ๋”๋ง ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ ธ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค! 

 

2. Flame Chart

์„ ํƒํ•œ ์ปค๋ฐ‹์˜ ์ƒํƒœ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋ฉฐ, ๊ฐ ๋ง‰๋Œ€๋Š” ์ปดํฌ๋„ŒํŠธ์™€ ๋ Œ๋”๋ง ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋ง‰๋Œ€์˜ ๋„ˆ๋น„๋Š” ๋ Œ๋”๋ง์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ด๊ณ , ์ƒ‰์ƒ์€ ํ•ด๋‹น ์ปค๋ฐ‹์—์„œ์˜ ๋ Œ๋”๋ง ์‹œ๊ฐ„์ธ๋ฐ, ๋…ธ๋ž€์ƒ‰์ด ๋” ๊ธด ์‹œ๊ฐ„, ์ดˆ๋ก์ƒ‰์ด ์ƒ๋Œ€์ ์œผ๋กœ ์‹œ๊ฐ„์„ ์˜๋ฏธํ•˜๋ฉฐ, ํšŒ์ƒ‰์€ ํ•ด๋‹น ์ปค๋ฐ‹์—์„œ๋Š” ๋ Œ๋”๋ง ๋˜์ง€ ์•Š์€ ์ปดํฌ๋„ŒํŠธ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ํŠน์ • ์ปดํฌ๋„ŒํŠธ ์ฐจํŠธ ๋ง‰๋Œ€๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ช‡ ๋ฒˆ์ด๋‚˜ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 
์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์˜ Bubble ๋ฉ”๋‰ด์˜ ์ฒซ ๋ฒˆ์งธ "0.3s for 9.1ms" ๋Š” 'ํ”„๋กœํŒŒ์ผ๋ง ์„ธ์…˜์˜ 0.3์ดˆ ์‹œ์ ์— ๋ Œ๋”๋ง ๋˜์—ˆ๊ณ , 9.1ms๊ฐ€ ์†Œ์š”๋˜์—ˆ์Œ'์„ ์˜๋ฏธํ•œ๋‹ค. 

3. Ranked Chart

ํŠน์ • ์ปค๋ฐ‹์—์„œ ๋ Œ๋”๋ง ์‹œ๊ฐ„์ด ๊ธด ์ˆœ์„œ๋Œ€๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ, ๋ Œ๋”๋ง ์‹œ๊ฐ„์ด ๊ธด ์ปดํฌ๋„ŒํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋ฆฌ์˜ ์ƒ์œ„์— ์œ„์น˜ํ•œ๋‹ค. Flame Chart ์ฐจํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŠน์ • ์ปดํฌ๋„ŒํŠธ ์ฐจํŠธ ๋ง‰๋Œ€๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ช‡ ๋ฒˆ์ด๋‚˜ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

#####

๊ฒฐ๋ก ์ ์œผ๋กœ, React DevTools์˜ Components์™€ Profiler ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ๊ธฐ์กด์— console.log๋ฅผ ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ ๊ณ ์นจ ํ•˜๋ฉฐ ๋””๋ฒ„๊น…ํ•˜๋˜ ๋ฐฉ์‹๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์ผ ๊ฒƒ ๊ฐ™๋‹ค. (ํŠนํžˆ, ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ์™€ ๋ Œ๋”๋ง ์‹œ๊ฐ„์„ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ๋ถˆํ•„์š”ํ•œ ๊ณผ์ •์„ ์ค„์ด๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๊ฐ€์žฅ ์ข‹์€ ๋“ฏ..) ๋˜, Profiler๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ , ๊ฐ€๋” memo / callback์„ ์‚ฌ์šฉํ• ์ง€ ๊ณ ๋ฏผ์Šค๋Ÿฌ์šธ ๋•Œ๊ฐ€ ๋งŽ์€๋ฐ ์ด๋Ÿด ๋•Œ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๋‹ค๋Š” ์ ๋„ ์œ ์šฉํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

โฌ‡๏ธ ํŠœํ† ๋ฆฌ์–ผ

https://react-devtools-tutorial.vercel.app/

https://www.digitalocean.com/community/tutorials/how-to-debug-react-components-using-react-developer-tools#step-3-tracking-component-rendering-across-interactions 

 

 

How To Debug React Components Using React Developer Tools | DigitalOcean

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

www.digitalocean.com