Front-end/React

[React] React Fiber: ๋ฆฌ์•กํŠธ์˜ ์ƒˆ๋กœ์šด ์—”์ง„ ์‹ฌ์ธต ํƒ๊ตฌ! ๐Ÿš€

xeunnie 2025. 1. 27. 01:00
728x90
๋ฐ˜์‘ํ˜•

๐Ÿš€ React Fiber ํ†บ์•„ ๋ณด๊ธฐ! ๐Ÿš€

React Fiber๋Š” React๊ฐ€ UI ์—…๋ฐ์ดํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ƒˆ๋กœ์šด ์ฝ”์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, React 16์—์„œ ์ฒ˜์Œ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

Fiber๋Š” React๋ฅผ ํ•œ์ธต ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ์ˆ ๋กœ, ๋น„๋™๊ธฐ ๋ Œ๋”๋ง์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ๋ณต์žกํ•œ UI๋ฅผ ๋น ๋ฅด๊ณ  ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ํŠนํžˆ, Fiber๋Š” ๊ธด ์ž‘์—…์„ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋™์•ˆ์—๋„ UI๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ, Fiber๋Š” ๋‹ค์–‘ํ•œ ๋ Œ๋”๋ง ์ „๋žต์„ ์ง€์›ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”๊ตฌ์— ๋งž๋Š” ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์—์„œ Fiber๋Š” React์˜ ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณ€ํ™”์‹œ์ผฐ๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋” ๋งŽ์€ ์ œ์–ด๊ถŒ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ–ˆ์Šต๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” React Fiber์˜ ์ฃผ์š” ๊ฐœ๋…๊ณผ ์ž‘๋™ ๋ฐฉ์‹, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ๋” ํšจ์œจ์ ์ด๊ณ  ๋ฐ˜์‘์„ฑ์ด ๋›ฐ์–ด๋‚œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

โฃ๏ธ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ

https://d2.naver.com/helloworld/2690975,

https://medium.com/stayfolio-tech/react%EA%B0%80-0-016%EC%B4%88%EB%A7%88%EB%8B%A4-%ED%95%98%EB%8A%94-%EC%9D%BC-feat-fiber-1b9c3839675a,

https://github.com/acdlite/react-fiber-architecture/blob/master/README.md


๐ŸŒŸ React Fiber๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

1๏ธโƒฃ ๊ธฐ๋ณธ ์ •์˜

React Fiber๋Š” React์˜ ์žฌ์กฐ์ •(Reconciliation) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ค์‹œ ์„ค๊ณ„ํ•œ ๊ฒƒ์œผ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

    • ์ค‘๋‹จ ๊ฐ€๋Šฅํ•œ ๋ Œ๋”๋ง: ์ž‘์—…์„ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ค‘์š”ํ•œ ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌ
    • ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์—…๋ฐ์ดํŠธ: ์ค‘์š”ํ•œ ์ž‘์—…์— ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹น
    • ๋น ๋ฅธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ: ์• ๋‹ˆ๋ฉ”์ด์…˜, ๋ ˆ์ด์•„์›ƒ, ์ œ์Šค์ฒ˜ ๋“ฑ๊ณผ ๊ฐ™์€ UI ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ†ตํ•œ ๋ถ€๋“œ๋Ÿฌ์šด ์ฒ˜๋ฆฌ

2๏ธโƒฃ ์™œ Fiber๊ฐ€ ๋“ฑ์žฅํ–ˆ์„๊นŒ?

๊ธฐ์กด React์˜ ์žฌ์กฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜(์Šคํƒ ๊ธฐ๋ฐ˜)์€ ๋ชจ๋“  ์ž‘์—…์„ ๋™๊ธฐ์ (Synchronous)์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ํ•œ ๋ฒˆ ๋ Œ๋”๋ง์ด ์‹œ์ž‘๋˜๋ฉด ์ค‘๋‹จ ์—†์ด ๋๊นŒ์ง€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์ฃ .

 

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด:

  • ๋ณต์žกํ•œ UI๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ ์‘๋‹ต ์ง€์—ฐ์ด ๋ฐœ์ƒ
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ(ํด๋ฆญ, ์Šคํฌ๋กค ๋“ฑ)์— ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ฐ˜์‘ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

Fiber๋Š” ์ด๋Ÿฐ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ , ๋ Œ๋”๋ง ์ž‘์—…์„ ์ž˜๊ฒŒ ๋‚˜๋ˆ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋†“์น˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿงฉ React Fiber์˜ ๊ตฌ์กฐ

1๏ธโƒฃ  Fiber ๋…ธ๋“œ(Fiber Node)

Fiber๋Š” Fiber Node๋ผ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋…ธ๋“œ๋Š” React ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ ์š”์†Œ
    • ๊ฐ Fiber ๋…ธ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ ์ •๋ณด(์˜ˆ: ํƒ€์ž…, props), ์ƒํƒœ(state), DOM ์ •๋ณด(์˜ˆ: ์‹ค์ œ DOM ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ) ๋“ฑ์„ ํฌํ•จ
    • ์ด๋ฅผ ํ†ตํ•ด React๋Š” ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Œ
  • ์—…๋ฐ์ดํŠธ ์„ ํƒ์„ฑ
    • ๋ Œ๋”๋ง ์ž‘์—…์ด ์ง„ํ–‰๋˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋…ธ๋“œ๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ => ๋ถˆํ•„์š”ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฉ์ง€, ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”
    • ์ด ๊ณผ์ •์€ React์˜ ํšจ์œจ์ ์ธ "์žฌ์กฐ์ •(reconciliation)"์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ + ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Œ
  • ๋งํฌ ๊ตฌ์กฐ
    • ๊ฐ Fiber ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹ ๋…ธ๋“œ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ์ „์ฒด ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ
    • ์ด๋Ÿฌํ•œ ๋งํฌ ๊ตฌ์กฐ๋Š” ํŠธ๋ฆฌ์˜ ํŠน์ • ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

2๏ธโƒฃ  ์ž‘์—… ๋‹จ์œ„(Work Unit)

Fiber๋Š” ์ž‘์—…์„ ์ž˜๊ฒŒ ๋‚˜๋ˆ  ์ž‘์—… ๋‹จ์œ„(Unit of Work)๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์ค‘๋‹จ ๋ฐ ์žฌ๊ฐœ
    • ๋ Œ๋”๋ง ์ค‘์—๋„ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ๋‚˜์ค‘์— ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ์–ด, ๊ธด ์ž‘์—…์ด ์‚ฌ์šฉ์ž ์ธํ„ฐ๋ž™์…˜์— ์˜ํ•ด ๋ฐฉํ•ด๋ฐ›์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๊ฐ™์€ ๋” ์ค‘์š”ํ•œ ์ž‘์—…์ด ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • ์ด๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ €ํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ณต์žกํ•œ UI๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด ๋ฐฉ์‹์€ ํŠนํžˆ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๋Œ€ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํฐ ์žฅ์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„ ์กฐ์ •
    • ๊ฐ ์ž‘์—… ๋‹จ์œ„๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ์ž‘์—…์ด ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋กœ ์ธํ•ด React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ˜์‘์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก React Fiber์˜ ์ฃผ์š” ํŠน์ง•

1๏ธโƒฃ ์ค‘๋‹จ ๊ฐ€๋Šฅํ•œ ๋ Œ๋”๋ง

Fiber์˜ ๊ฐ€์žฅ ํฐ ํ˜์‹ ์€ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ๋‚˜์ค‘์— ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

  • ๊ธด ๋ Œ๋”๋ง ์ž‘์—… ์ค‘๊ฐ„์— ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ(์˜ˆ: ํด๋ฆญ, ์Šคํฌ๋กค)๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ Œ๋”๋ง ์ž‘์—…์€ ๋ธŒ๋ผ์šฐ์ €์˜ Idle Time(์—ฌ์œ  ์‹œ๊ฐ„)์— ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉฐ, ์ด ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ž‘์—…์„ ์ผ์‹œ ์ค‘๋‹จํ•œ ํ›„, ํ•„์š”์— ๋”ฐ๋ผ ์žฌ๊ฐœํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ์ž‘์—…์— ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง

Fiber๋Š” ์ž‘์—…์˜ ์šฐ์„ ์ˆœ์œ„(Priority)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ Œ๋”๋ง ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๋†’์€ ์šฐ์„ ์ˆœ์œ„(์‚ฌ์šฉ์ž ์ž…๋ ฅ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ)๋Š” ์ฆ‰์‹œ ์ฒ˜๋ฆฌ๋˜์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅธ ๋ฐ˜์‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„(๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐ์ดํ„ฐ ๋กœ๋“œ, ๋น„๊ฐ€์‹œ์  DOM ์—…๋ฐ์ดํŠธ ๋“ฑ)๋Š” ์‚ฌ์šฉ์ž์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๋ฒ”์œ„์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ์ด๋Ÿฐ ์—…๋ฐ์ดํŠธ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด, ๋” ๋‚˜์€ ์„ฑ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋” ์„ธ๋ฐ€ํ•œ ์žฌ์กฐ์ •

Fiber๋Š” ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ๋”์šฑ ์„ธ๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ DOM ์—…๋ฐ์ดํŠธ๋ฅผ ์ค„์ด๊ณ , ํšจ์œจ์ ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด, ์ „์ฒด DOM์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๋Œ€์‹  ์ตœ์†Œํ•œ์˜ ๋ณ€๊ฒฝ๋งŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ˜์‘์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.

4๏ธโƒฃ ์ ์ง„์  ๋ Œ๋”๋ง (Incremental Rendering)

๋ Œ๋”๋ง ์ž‘์—…์„ ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์— ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธด ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ, UI๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ฐฉ์‹์€ ํŠนํžˆ ๋ณต์žกํ•œ UI๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์„ ๋”์šฑ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

5๏ธโƒฃ ๋™์‹œ์„ฑ ์ง€์›

Fiber๋Š” ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠน์ • ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์ž‘์—…์ด ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‘๋‹ต์„ฑ์„ ๋†’์ด๊ณ , ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

โš™๏ธ Fiber์˜ ๋™์ž‘ ์›๋ฆฌ

1๏ธโƒฃ ๋ Œ๋” ๋‹จ๊ณ„(Render Phase):

  • ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ ์ƒ์„ฑ
    • ์ด ๋‹จ๊ณ„์—์„œ React๋Š” ๊ฐ€์ƒ DOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํ˜„์žฌ ์ƒํƒœ์™€ ์ด์ „ ์ƒํƒœ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํ•„์š”ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๊ณผ์ •์€ React์˜ ํšจ์œจ์ ์ธ ์žฌ์กฐ์ •(reconciliation) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ค‘๋‹จ ๊ฐ€๋Šฅ์„ฑ
    • ๋ Œ๋” ๋‹จ๊ณ„๋Š” ์ค‘๋‹จ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ๋‹จ์œ„๋ฅผ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธด ๋ Œ๋”๋ง ์ž‘์—… ์ค‘๊ฐ„์— ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ(์˜ˆ: ํด๋ฆญ, ์Šคํฌ๋กค)๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ €ํ•ดํ•˜์ง€ ์•Š๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ˜์‘์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž‘์—… ๋‹จ์œ„ ์ฒ˜๋ฆฌ
    • ๊ฐ ์ž‘์—…์€ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ์ค‘๋‹จํ•˜๊ณ  ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋Ÿฌํ•œ ๋น„๋™๊ธฐ์  ํŠน์„ฑ ๋•๋ถ„์—, ๋ Œ๋”๋ง ๊ณผ์ •์—์„œ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์ž‘์—…์ด ๋จผ์ € ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ ์ปค๋ฐ‹ ๋‹จ๊ณ„(Commit Phase):

  • DOM ์—…๋ฐ์ดํŠธ ๋ฐ˜์˜
    • ์ปค๋ฐ‹ ๋‹จ๊ณ„์—์„œ๋Š” ์ด์ „ ๋‹จ๊ณ„์—์„œ ๊ณ„์‚ฐ๋œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹ค์ œ DOM์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธ๋˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค.
  • ์ค‘๋‹จ ๋ถˆ๊ฐ€๋Šฅ์„ฑ
    • ์ปค๋ฐ‹ ๋‹จ๊ณ„๋Š” ์ค‘๋‹จํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๋‹จ๊ณ„๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋ฏ€๋กœ, UI์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํšจ์œจ์ ์ธ ๋ Œ๋”๋ง
    • ์‹ค์ œ DOM ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ์ด ๋‹จ๊ณ„์—์„œ๋Š” React๊ฐ€ ์ตœ์†Œํ•œ์˜ ๋ณ€๊ฒฝ๋งŒ์„ ์ ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ถ€๋“œ๋Ÿฌ์šด ์ „ํ™˜๊ณผ ๋น ๋ฅธ ๋ฐ˜์‘์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” Fiber๊ฐ€ UX๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ• ๊นŒ?

1๏ธโƒฃ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜

  • Fiber๋Š” ๋ Œ๋”๋ง ์ž‘์—…์„ ๋ธŒ๋ผ์šฐ์ €์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ”„๋ ˆ์ž„(์•ฝ 16ms)์— ๋งž์ถฐ ์กฐ์ •ํ•˜์—ฌ, ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋งค๋„๋Ÿฝ๊ฒŒ ์ง„ํ–‰๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋Š๊น€ ์—†์ด ํ๋ฅด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๋ผ๋ฉฐ, ์‹œ๊ฐ์ ์œผ๋กœ ๋” ์พŒ์ ํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Fiber์˜ ์ค‘๋‹จ ๊ฐ€๋Šฅํ•œ ๋ Œ๋”๋ง ํŠน์„ฑ ๋•๋ถ„์—, ๊ธด ๋ Œ๋”๋ง ์ž‘์—… ์ค‘์—๋„ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์›ํ™œํ•œ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ์šฐ์„ 

  • Fiber๋Š” ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ, ์ž…๋ ฅ ์ด๋ฒคํŠธ, ์Šคํฌ๋กค ๋“ฑ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ตœ์šฐ์„ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ฐ˜์‘ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์—†์ด ์ฆ‰์‹œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋น ๋ฅธ ๋ฐ˜์‘์„ฑ์€ ์‚ฌ์šฉ์ž ๋งŒ์กฑ๋„๋ฅผ ๋†’์ด๊ณ , ๋” ๋‚˜์•„๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์‹ ๋ขฐ๊ฐ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ  ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ์˜ ํšจ์œจ์„ฑ

  • Fiber๋Š” ๋ณต์žกํ•œ UI์—์„œ๋„ ํ•„์š”ํ•œ ์—…๋ฐ์ดํŠธ๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Š” ํŠนํžˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๊ณ  ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‘๋“œ๋Ÿฌ์ง€๋ฉฐ, ๋ถˆํ•„์š”ํ•œ DOM ์—…๋ฐ์ดํŠธ๋ฅผ ์ค„์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์ฒด์ ์ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • Fiber์˜ ์„ธ๋ฐ€ํ•œ ์ž‘์—… ๋‹จ์œ„ ์ฒ˜๋ฆฌ ๋ฐ ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง ๋•๋ถ„์—, ์‚ฌ์šฉ์ž๋Š” ๋А๋ฆฐ ์„ฑ๋Šฅ์ด๋‚˜ ์ง€์—ฐ ์—†์ด ๋งค๋„๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ React Fiber ์‹ค์ „ ์˜ˆ์ œ

React Fiber๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ React ๋‚ด๋ถ€์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน๋ณ„ํžˆ ์„ค์ •ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Fiber์˜ ๋™์ž‘์„ ๊ฐ„์ ‘์ ์œผ๋กœ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค

 

1. ๊ธด ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง ์ตœ์ ํ™”

import React, { useState } from 'react';

function LongList() {
  const [items] = useState([...Array(10000).keys()]);

  return (
    <ul>
      {items.map((item) => (
        <li key={item}>{item}</li>
      ))}
    </ul>
  );
}

export default LongList;

 

์œ„์™€ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ, React Fiber๋Š” ๋ Œ๋”๋ง ์ž‘์—…์„ ์ž˜๊ฒŒ ๋‚˜๋ˆ„์–ด UI๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

Fiber์˜ ๋™์ž‘ ์ฒด๊ฐํ•˜๊ธฐ

  • ์ค‘๋‹จ ๊ฐ€๋Šฅํ•œ ๋ Œ๋”๋ง
    • ๊ธด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กค์„ ํ•˜๋”๋ผ๋„, Fiber๋Š” ํ˜„์žฌ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ์Šคํฌ๋กค ์ด๋ฒคํŠธ๋ฅผ ์šฐ์„  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์Šคํฌ๋กคํ•˜๋Š” ๋™์•ˆ์—๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‘๋‹ตํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋А๋‚Œ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ์ž‘์—… ๋‹จ์œ„ ์ฒ˜๋ฆฌ
    • ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ํ•ญ๋ชฉ์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ, React๋Š” ๋ Œ๋”๋ง ์ž‘์—…์„ ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์— ๋‚˜๋ˆ„์–ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋กœ ์ธํ•ด ์ „์ฒด ๋ Œ๋”๋ง์ด ๋А๋ ค์ง€์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด๋Š” ๋ฐ ์žˆ์–ด ๋งค๋„๋Ÿฌ์šด ๊ฒฝํ—˜์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์˜ˆ์ œ: ๊ฐ€์ƒ ์Šคํฌ๋กค(Virtual Scrolling)

๋ฆฌ์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ, ์„ฑ๋Šฅ์„ ๋”์šฑ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ์Šคํฌ๋กค์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ๋งŒ ๋ Œ๋”๋งํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

import React, { useState, useEffect } from 'react';

const ITEM_HEIGHT = 35; // ๊ฐ ํ•ญ๋ชฉ์˜ ๋†’์ด

function VirtualList() {
  const [items] = useState([...Array(10000).keys()]);
  const [scrollY, setScrollY] = useState(0);

  const handleScroll = (event) => {
    setScrollY(event.target.scrollTop);
  };

  const startIndex = Math.floor(scrollY / ITEM_HEIGHT);
  const endIndex = startIndex + Math.ceil(window.innerHeight / ITEM_HEIGHT);

  return (
    <div style={{ height: '100vh', overflowY: 'auto' }} onScroll={handleScroll}>
      <ul>
        {items.slice(startIndex, endIndex).map((item) => (
          <li key={item} style={{ height: ITEM_HEIGHT }}>{item}</li>
        ))}
      </ul>
    </div>
  );
}

export default VirtualList;

 

์ด ์˜ˆ์ œ๋Š” ์Šคํฌ๋กค ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ํ™”๋ฉด์— ๋ณด์ด๋Š” ํ•ญ๋ชฉ๋งŒ ๋ Œ๋”๋งํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

Fiber๋Š” ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ๋„ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜์—ฌ, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค!


๐Ÿšง React Fiber์˜ ํ•œ๊ณ„

1๏ธโƒฃ ๋ธŒ๋ผ์šฐ์ €์™€์˜ ํ˜‘๋ ฅ ํ•„์š”

  • Fiber๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์—ฌ์œ  ์‹œ๊ฐ„(Idle Time)์„ ํ™œ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ์œ ๋ฆฌํ•˜์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„์™€์˜ ํ˜‘๋ ฅ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ”์œ ์ƒํƒœ(์˜ˆ: ๊ธด JavaScript ์‹คํ–‰, ๋ณต์žกํ•œ CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ)๋ผ๋ฉด Fiber์˜ ๋ Œ๋”๋ง ์ž‘์—…์ด ์ง€์—ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด UI ์—…๋ฐ์ดํŠธ๊ฐ€ ๋Šฆ์–ด์ง€๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŠนํžˆ, ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ฝ”๋“œ ์ตœ์ ํ™”์™€ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ํ•™์Šต ๊ณก์„ 

  • Fiber์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ๊นŠ์ด ์ดํ•ดํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Fiber๋Š” ์ด์ „์˜ React ๊ตฌ์กฐ์™€๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฏ€๋กœ, ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๋‚˜ ๊ธฐ์กด React ๊ฐœ๋ฐœ์ž ๋ชจ๋‘์—๊ฒŒ ํ•™์Šต ๊ณก์„ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ํŠนํžˆ, ์ค‘๋‹จ ๊ฐ€๋Šฅํ•œ ๋ Œ๋”๋ง, ์ž‘์—… ๋‹จ์œ„ ์ฒ˜๋ฆฌ, ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง ๋“ฑ์˜ ๊ฐœ๋…์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฝํ—˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด, ์ดˆ๋ณด์ž์—๊ฒŒ๋Š” ์ง„์ž… ์žฅ๋ฒฝ์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํšจ๊ณผ์ ์œผ๋กœ Fiber๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‹ค์ „ ๊ฒฝํ—˜์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒท ์ „์„ค์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ด…์‹œ๋‹น! ๐ŸŒท

728x90
๋ฐ˜์‘ํ˜•