๐ React Fiber Architecture
Introductionโ
React Fiber๋ React์ ํต์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ง์์ ์ผ๋ก ์ฌ๊ตฌํํ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ React ํ์ด 2๋ ๋๊ฒ ์ฐ๊ตฌํ ๊ฒฐ๊ณผ์ ๋๋ค.
React Fiber์ ๋ชฉํ๋ ์ ๋๋ฉ์ด์ , ๋ ์ด์์ ๋ฐ ์ ์ค์ฒ์ ๊ฐ์ ์์ญ์ ๋ํ ์ ํฉ์ฑ์ ๋์ด๋ ๊ฒ์ ๋๋ค. ์ฃผ์ ์ฃผ์ ์ ์ฆ๋ถ ๋ ๋๋ง(incremental rendering) ์ ๋๋ค: ๋ ๋๋ง ์์ ์ chunk๋ก ๋ถํ ํ๊ณ ์ฌ๋ฌ ํ๋ ์์ ๋ถ์ฐ์ํค๋ ๊ธฐ๋ฅ์ ๋๋ค.
๋ค๋ฅธ ์ฃผ์ ๊ธฐ๋ฅ์๋ ์ ์ ๋ฐ์ดํธ๊ฐ ๋ค์ด์ฌ ๋ ์์ ์ ์ผ์ ์ค์ง, ์ค๋จ ๋๋ ์ฌ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋ฉ๋๋ค. ์ด์ธ์๋ ๋ค์ํ ์ ํ์ ์ ๋ฐ์ดํธ์ ์ฐ์ ์์๋ฅผ ํ ๋นํ๋ ๊ธฐ๋ฅ๊ณผ ์๋ก์ด ๋์์ฑ ๋ชจ๋๋ฅผ ์ํ ์ด๊ธฐ ์์ ๋ค์ด ํฌํจ๋ฉ๋๋ค.
About this documentโ
Fiber๋ ์ฝ๋๋ง ๋ณด๊ณ ํ์ ํ๊ธฐ ์ด๋ ค์ด ๋ช ๊ฐ์ง ์๋ก์ด ๊ฐ๋ ์ ๋์ ํ์ต๋๋ค. ์ด ๋ฌธ์๋ ๋ด๊ฐ React ํ๋ก์ ํธ์์ Fiber์ ๊ตฌํ์ ๋ฐ๋ผ๊ฐ๋ฉด์ ์์ฑํ ๋ฉ๋ชจ๋ค๋ก๋ถํฐ ์์๋์์ต๋๋ค. ๋ฌธ์์ ์์ด ๋ง์์ง์๋ก ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ ์ ์ฉํ ๋ฆฌ์์ค๊ฐ ๋ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
ํต์ฌ ์ฉ์ด๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ์ฌ ์ ๋ฌธ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ๋ฅํ ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ฌ์ด ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฅํ ์ธ๋ถ ๋งํฌ ๋ง์ด ์ฐ๊ฒฐํด๋๊ฒ ์ต๋๋ค.
์ ๋ React ํ์ ์์๋์ด ์์ง ์์ผ๋ฉฐ ์ด๋ ํ ๊ถํ์ ๊ฐ๊ณ ๋งํ์ง ์์์ ์์์ผ๋ฉด ํ๋ค. ์ด๊ฒ์ ๊ณต์ ๋ฌธ์๊ฐ ์๋๋๋ค. ์ ๋ React ํ์๋ค์๊ฒ ์ ํ์ฑ์ ๊ฒํ ํ๋๋ก ์์ฒญํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์๋ ์งํ ์ค์ธ ์์ ์ ๋๋ค. Fiber๋ ์๋ฃ๋๊ธฐ ์ ์ ์๋นํ ๋ฆฌํฉํฐ๋ง์ ๊ฑฐ์น ๊ฐ๋ฅ์ฑ์ด ๋์ ์งํ ์ค์ธ ํ๋ก์ ํธ์ ๋๋ค. ๋ํ ์ฌ๊ธฐ์ ๋์์ธ์ ๋ฌธ์ํํ๋ ค๋ ์๋๋ ์งํ ์ค์ ๋๋ค. ๊ฐ์ ๋ฐ ์ ์์ ํ์ํฉ๋๋ค.
๋ด ๋ชฉํ๋ ์ด ๋ฌธ์๋ฅผ ์ฝ์ ํ Fiber๊ฐ ๊ตฌํ๋๋ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์ ์ดํดํ๊ณ ๊ฒฐ๊ตญ์๋ React์ ๋ค์ ๊ธฐ์ฌํ ์ ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
Prerequisites(์ ์ ์กฐ๊ฑด)โ
๊ณ์ํ๊ธฐ ์ ์ ๋ค์ ๋ฆฌ์์ค๋ฅผ ์์งํ์๊ธฐ ๋ฐ๋๋๋ค.
- React Components, Elements, and Instances: โComponentโ๋ ์ง๋์น๊ฒ ๋ค์ํ๊ฒ ์ฌ์ฉ๋๋ ๋จ์ด์ ๋๋ค. ์ด๋ฐ ์ฉ์ด์ ๋ํ ํ๊ณ ํ ์ดํด๋ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- Reconciliation(์ฌ์กฐ์ ): React์ ์ฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๋์ ์์ค์ ์ค๋ช ์ ๋๋ค.
- React Basic Theoretical Concepts: React์ ๊ฐ๋ ์ ๋ชจ๋ธ์ ๋ํ ์ค๋ช . ์ด ์ค ์ผ๋ถ๋ ์ฒ์ ์ฝ์ ๋ ์ดํด๊ฐ ๋์ง ์์ ์ ์์ต๋๋ค. ๊ด์ฐฎ์ต๋๋ค. ์๊ฐ์ด ์ง๋๋ฉด ๋ ์ดํด๊ฐ ๋ ๊ฒ์ ๋๋ค.
- React Design Principles: ์ค์ผ์ค๋ง ์น์ ์ ํนํ ์ง์คํด์ ๋ณด์ธ์. React Fiber์ why๋ฅผ ์ ์ค๋ช ํ๊ณ ์์ต๋๋ค.
Reviewโ
์์ง ์ ์ ์กฐ๊ฑด ํญ๋ชฉ์ ๋ณด๊ธฐ ์ ์ด๋ผ๋ฉด ๊ผญ ๋จผ์ ๋ณด๊ธธ ๋ฐ๋๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ธฐ ์ ์ ๋ช ๊ฐ์ง ์ปจ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
reconciliation(์ฌ์กฐ์ )์ ๋ฌด์์ ๋๊น?โ
reconciliationโ
- React ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค ๋ถ๋ถ์ ๋ณ๊ฒฝํด์ผ ํ๋์ง ๊ฒฐ์ ํ๊ธฐ ์ํด ํ ํธ๋ฆฌ๋ฅผ ๋ค๋ฅธ ํธ๋ฆฌ์ ๋น๊ตํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
updateโ
- React ์ ํ๋ฆฌ์ผ์ด์
์ ๋ ๋๋งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ. ์ผ๋ฐ์ ์ผ๋ก
setState
์ ๊ฒฐ๊ณผ์ ๋๋ค. ๊ฒฐ๊ตญ ๋ฆฌ๋๋๋ง ๋ฉ๋๋ค.
React API์ ํต์ฌ ์์ด๋์ด๋ ์ ๋ฐ์ดํธ๊ฐ ์ ์ฒด ์ฑ์ ๋ฆฌ๋๋๋งํ๋ ๊ฒ์ฒ๋ผ ์๊ฐํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์ํ์์ ๋ค๋ฅธ ์ํ๋ก ํจ์จ์ ์ผ๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณ ๋ฏผํ๋ ๋์ ์ ์ธ์ ์ผ๋ก ์ถ๋ก ํ ์ ์์ต๋๋ค. (A์์ B๋ก, B์์ C๋ก, C์์ A๋ก ๋ฑ)
์ค์ ๋ก ๋งค ๋ณํ๊ฐ ์์ ๋๋ง๋ค ์ค์ ์ฑ์ ๋ฆฌ๋ ๋๋ง ํ๋ ๊ฒ์ ์ ๋ง ์ฌ์ํ(trivial) ์ฑ์์๋ ๊ฐ๋ฅํ ์ผ์ด๋ค. ์ค์ ์ฑ์์๋ ์ฑ๋ฅ ์ธก๋ฉด์์ ์์ฒญ๋๊ฒ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค. React์๋ ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ ์งํ๋ฉด์ ์ ์ฒด ์ฑ์ ๋ฆฌ๋ ๋๋งํ๋ ๋ชจ์์ ๋ง๋๋ ์ต์ ํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด๋ฌํ ์ต์ ํ์ ๋๋ถ๋ถ์ reconciliation(์ฌ์กฐ์ )์ด๋ผ๋ ํ๋ก์ธ์ค์ ์ผ๋ถ์ ๋๋ค.
์ฌ์กฐ์ ์ "๊ฐ์ DOM(Virtual DOM)"์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ดํด๋๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ๋์ ์์ค์ ์ค๋ช
(high-level description)์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: React ์ ํ๋ฆฌ์ผ์ด์
์ ๋ ๋๋งํ๋ฉด ์ฑ์ ๋ํ๋ด๋ ๋
ธ๋ ํธ๋ฆฌ๊ฐ ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ํธ๋ฆฌ๋ ๋ ๋๋ง ํ๊ฒฝ์ผ๋ก ํ๋ฌ์๋ฉ๋๋ค. (์๋ฅผ ๋ค์ด, ๋ธ๋ผ์ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ DOM ์์
ํํ๋ก ๋ณํ๋ฉ๋๋ค.) ์ฑ์ด ์
๋ฐ์ดํธ๋๋ฉด(์ผ๋ฐ์ ์ผ๋ก setState
๋ฅผ ํตํด) ์ ํธ๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค. ์ ํธ๋ฆฌ๋ ๋ ๋๋ง๋ ์ฑ์ ์
๋ฐ์ดํธํ๋ ๋ฐ ํ์ํ ์์
์ ๊ณ์ฐํ๊ธฐ ์ํด ์ด์ ํธ๋ฆฌ์ ๋น๊ต๋ฉ๋๋ค.
Fiber๋ ์กฐ์ ์(reconciler)๋ฅผ ์ฒ์๋ถํฐ ์ฌ์์ฑํ ๊ฒ์ด์ง๋ง, React ๋ฌธ์์ ์ค๋ช ๋ ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ์ ๋์ฒด๋ก ๋์ผํฉ๋๋ค. ์ฌ๊ธฐ์ ํค ํฌ์ธํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ค๋ฅธ ์ปดํฌ๋ํธ ํ์ ์ ์ค์ง์ ์ผ๋ก ๋ค๋ฅธ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. React๋ ๊ทธ๊ฒ๋ค์ ๋น๊ตํ๋ ค๊ณ ์๋ํ์ง ์๊ณ ์ด์ ํธ๋ฆฌ๋ฅผ ์์ ํ ๊ต์ฒดํฉ๋๋ค.
- ๋ฆฌ์คํธ ๋น๊ต๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. ํค๋ "์์ ์ ์ด๊ณ ์์ธก ๊ฐ๋ฅํ๋ฉฐ ๊ณ ์ ํด์ผ ํฉ๋๋ค."
Reconciliation vs rendering(์ฌ์กฐ์ vs ๋ ๋๋ง)โ
DOM์ React๊ฐ ๋ ๋๋งํ ์ ์๋ ๋ ๋๋ง ํ๊ฒฝ ์ค ํ๋์ผ ๋ฟ์ด๋ฉฐ, ์ด์ธ์๋ React Native๋ฅผ ํตํ ๊ธฐ๋ณธ iOS ๋ฐ Android ๋ณด๊ธฐ(views)์ ๋๋ค. (์ด๊ฒ์ด "๊ฐ์ DOM"์ด ์ฝ๊ฐ ์๋ชป๋ ์ด๋ฆ์ธ ์ด์ ์ ๋๋ค.)
์ด๋ ๊ฒ ๋ง์ ๋์์ ์ง์ํ ์ ์๋ ์ด์ ๋ React๊ฐ ์ฌ์กฐ์ ๊ณผ ๋ ๋๋ง์ด ๋ณ๋์ ๋จ๊ณ๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์กฐ์ ์(reconciler)๋ ํธ๋ฆฌ์ ์ด๋ค ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋์๋์ง ๊ณ์ฐํ๋ ์์ ์ ์ํํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ ๋๋ฌ(renderer)๋ ํด๋น ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง๋ ์ฑ์ ์ค์ ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.