Firebase๋ ์ธ์ฆยท๋ฐ์ดํฐ๋ฒ ์ด์คยทํธ์คํ ๊ฐ์ ์ฑ์ ํ์ ๋ฐฑ์๋ ๊ธฐ๋ฅ์ ์๋ฒ ์์ด ๋ฐ๋ก ์ฐ๊ฒ ํด์ฃผ๋ Google์ ์ฌ์ธ์ ๊ฐ๋ฐ ํ๋ซํผ
React Router DOM์ SPA ํ๊ฒฝ์์ History API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก URL๊ณผ ์ปดํฌ๋ํธ๋ฅผ ์ฐ๊ฒฐํด, ์๋ก๊ณ ์นจ ์์ด ํ์ด์ง ์ ํยท์ค์ฒฉ ๋ ์ด์์ยท๋์ ๋ผ์ฐํ ๊น์ง ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ React ๊ณต์ ๋ผ์ฐํ ์๋ฃจ์
๋ฆฌ์กํธ์์๋ ์ํ(state)๊ฐ UI๋ฅผ ๊ฒฐ์ ํ๊ณ , ์ด๋ฒคํธ๋ ์ํ๋ง ๋ณ๊ฒฝํ๋ฉฐ, UI ๋ณํ๋ ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ํตํด ์๋์ผ๋ก ๋ฐ๋ผ์จ๋ค
React์์ ๋ ๋๋ง ๋ฌธ์ ๋ ๋๋ถ๋ถ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ์ฐธ์กฐ๋ฅผ ์๋ชป ๋ค๋ฃฌ ๋ฌธ์ ๋ค
ํด๋ฆญ ์ด๋ฒคํธ๋ props๋ก ์๋๋ก ์ ๋ฌ๋๊ณ , key๋ก ๋ฆฌ์คํธ๋ฅผ ๊ตฌ๋ถํ๋ฉฐ, stepNumber๋ก ํ์ฌ ์์น๋ฅผ ๋ฐ๊ฟ history๋ฅผ ์๋ผ ์ ์ํ๋ฅผ ๋ง๋ค์ด React ์๊ฐ์ฌํ์ ๊ตฌํํ๋ค
React 16.8์ Hooks(useState, useEffect ๋ฑ)๋ ํด๋์คํ ์ปดํฌ๋ํธ์ ๋ณต์กํ ์๋ช ์ฃผ๊ธฐ์ ์ํ ๊ด๋ฆฌ๋ฅผ ํจ์ํ์ผ๋ก ํตํฉํ์ฌ, ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ๋ก์ง์ ์ฌ์ฌ์ฉ์ฑ์ ๊ทน๋ํํ๊ณ ๋ ์ง๊ด์ ์ธ ์ค๊ณ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค
์๋ฒ๊ฐ React๋ก HTML์ ๋จผ์ ๋ง๋ค๊ณ , ๋ธ๋ผ์ฐ์ ๋ ๊ทธ HTML์ ๋ฐ์์ hydrate๋ก React ์ฑ์ผ๋ก ๋์ด๋ฆฐ๋ค
์๋ฒ๊ฐ React๋ก HTML์ ๋จผ์ ๋ง๋ค๊ณ , ๋ธ๋ผ์ฐ์ ๋ ๊ทธ HTML์ ๋ฐ์์ hydrate๋ก React ์ฑ์ผ๋ก ๋์ด๋ฆฐ๋ค
์๋ฒ๊ฐ React๋ก HTML์ ๋จผ์ ๋ง๋ค๊ณ , ๋ธ๋ผ์ฐ์ ๋ ๊ทธ HTML์ ๋ฐ์์ hydrate๋ก React ์ฑ์ผ๋ก ๋์ด๋ฆฐ๋ค
๋ฆฌ์กํธ ํ ์ โAPI ์ฌ์ฉ๋ฒโ์ด ์๋๋ผ, ํด๋ก์ ยท์ฐธ์กฐ ๋น๊ตยทํจ์ ์ฌ์คํ์ด๋ผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์๋ฆฌ ์์์ ๋ ๋๋ง๊ณผ ๋ถ์ํจ๊ณผ๋ฅผ ์๋์ ์ผ๋ก ์ ์ดํ๊ธฐ ์ํ ์ค๊ณ ๋๊ตฌ
๋ฆฌ์กํธ๋ JSX๋ฅผ ๊ฐ์ฒดํํ๊ณ ํ์ด๋ฒ(Fiber) ์ํคํ ์ฒ ๊ธฐ๋ฐ์ ๊ฐ์ DOM ์ฌ์กฐ์ ์ ํตํด, UI ์ ๋ฐ์ดํธ๋ฅผ ํจ์จ์ ์ผ๋ก ์ค์ผ์ค๋งํ๊ณ ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฆฌ์กํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋๋ฑ ๋น๊ต(Object.is ๊ธฐ๋ฐ ์์ ๋น๊ต)๋ก ๊ฐ์ด ์๋ ์ฐธ์กฐ์ ๋ณ๊ฒฝ ์ฌ๋ถ๋ฅผ ๊ฐ์งํด ๋ ๋๋ง์ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒดยทํจ์์ ์ฐธ์กฐ ์์ ์ฑ์ด ๊ณง ๋ ๋๋ง ์ฑ๋ฅ์ ์ข์ฐํจ