โจ์ฐธ๊ณ โจ React๊ฐ ๋น ๋ฅธ ์ด์ ? virtual(์กด์ฌํ์ง ์๋)์์ค์ฝ๋์ ์ฒ์๋ถํฐ HTML์ ๋ฃ์ง ์๊ณ ,HTML์์ HTML์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธapplication์ด ๋ก๋ํ ๋ ๋น์ด ์๋ HTML์ ๋ก๋ํ๊ฒ ๋๊ณ ,๊ทธ๋ฐ ๋ค์์ react๊ฐ HTML์ ๋ฐ์ด๋ฃ๊ฒ ๋๋ค
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค3์ฃผ์ฐจ๋ถํฐ๋ React๋ฅผ ๋ฐฐ์ฐ๊ฒ ๋๋๋ฐ HTML, CSS, JS์ ๊ฒจ์ฐ ์ต์(?) ์๋์ง.. ์์ง ์ต์ํ ์ ๋๋ ์๋์ง,๐ใ ํด์ก๋ค ์ถ์๋ฐ ์ด๋ ค์ธ ๊ฒ๋ง ๊ฐ์ React๋ฅผ ๋ฐฐ์ฐ๊ฒ ๋์ด ์์ต ๊ฒธ ๊ณต๋ถํ๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณธ๋ค.React์์ ์ฌ์ฉ๋
Component ๋จ์์ Javascript Library๊ฐ์ ๋(Virtual Dom)ย ์ ํตํด UI๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธํ๋ค๊ฐ์ ๋(Virtual Dom) ์ ์ด์ UI ์ํ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํด์, ๋ณ๊ฒฝ๋ UI์ ์ต์ ์งํฉ์ ๊ณ์ฐํ๋ ๊ธฐ์ ์ด๋ค. ์ด ๊ธฐ์ ๋ก ๋ถํ์ํ UI
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋คstate : ์ํํ๋ฉด์ ๋ณด์ฌ์ค ์ปดํฌ๋ํธ์ UI ์ ๋ณด(์ํ)๋ฅผ ์ง๋๊ณ ์๋ย ๊ฐ์ฒดconstructor()์์ ์ ์ธ๋ state์ ๊ฐ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉprops : properties(์์ฑ)props๋ ๋ถ๋ชจ component๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ ๋ฐ
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋คState & Event์ ๋ํด ๊ณต๋ถํ๋ ์ค, this์ bind์ ๊ฐ๋ ์ ์ ๋ฆฝํ๊ณ ์ ๊ธฐ๋กํด๋ณธ๋ค.๊ฐ์ฒด์งํฅ ์ธ์ด์์์ ์ผ๋ฐ์ ์ธ this๋ ํ์ฌ ๊ฐ์ฒด๋ฅผ ์ง์นญํ์ง๋ง, js์ this๋ ์คํํ ๋์ context๋ฅผ ์๋ฏธํจclass component
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋คwestagram project ์ค react๋ก ๋๊ธ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ map()๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ๊ฒ ๋์๋๋ฐ, ์คํ์์ผ ๋ณด๋ ์๋ํ๋ ๋ฐ์ ๋ฌธ์ ๋ ์์ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์๋ฌ์ ๋ด์ฉ์ ๊ฐ ํญ๋ชฉ์ key๋ฅผ ๋ฃ์ด์ผ ํ๋ค๋ ๋ด์ฉ์ฐ....๐์
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค4์ฃผ์ฐจ์ mock data ํ์ฉํ์ฌ react westagram์ ๊ตฌํํ๊ธฐ ์ํด ๊ณต๋ถํ๋ ์คfetch() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ๋ ๊ณต๋ถํ๊ณ ์ ์ฐพ์๋ณด๊ณ ์ ๋ฆฌํ ๋ด์ฉ ๊ธฐ๋กํด๋ณธ๋ค.UI๋ฅผ ๊ตฌํํ๋ค ๋ณด๋ฉด API๊ฐ ๋์ค๊ธฐ ์ ์ ํ์ด์ง๊ฐ ๋จผ์ ๋์ค๋ ๊ฒฝ์ฐ
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์์ ์ปดํฌ๋ํธ์ Lifecycle์ ๋ํด ์์๋ณด๊ณ ๊ด๋ จ๋ ์๋ฌ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ ์๊ธฐ!!์๊ธฐ ์ ์ ํ๋ ์ธ์ ๐ ๋ฐ๋ก ์ ์ฉํ๋ ์กฐ๊ฑด๋ถ ๋ ๋๋ง!!React ์ปดํฌ๋ํธ ์์ state์ ์๋ช ์ฃผ๊ธฐconstructorrendercompo
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค๋ฐฑ์๋์ ์ฒ์์ผ๋ก ํต์ ํ๋๐ก! ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ์ง์ ์ค์ต ํ!! ๋งค์ฐ๋งค์ฐ๋งค์ฐ๋งค์ฐ ์ ๊ธฐํ๋๐คฉ! ๋ก๊ทธ์ธ & ํ์๊ฐ์ API ์ ์ ๊ฐ ์ด๋ฉ์ผ์ ์ ๋ ฅํ๋ฉด Email Input์ handleInput ํจ์๊ฐ ์คํ๋๋ค.handleInput
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค1์ฐจ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ฉ์ธ ํ์ด์ง์ ์ ์ฒด ์ํ์ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ ๊ตฌํ ์ค, ์ฑ๋ฅ์ ํ ๋ฒ์ ๋ง์ ์ํ์ด ์ ๋ถ ๋ ธ์ถ๋๊ธฐ ๋ณด๋จ ์คํฌ๋กค์ ๋ฐ๋ผ ์ผ์ ๋ฐ์ดํฐ์ ์ ๋งํผ ํธ์ถ๋๋๋ก ๊ธฐ๋ฅ ๊ตฌํ์ด ํ์ํ๋ค. ๊ทธ๋ด ๋ ์๊ฒ ๋ ๋ฌดํ์คํฌ๋กค ๊ธฐ๋ฅ ๊ตฌํํ๋ ๋ด
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค๋ฌดํ์คํฌ๋กค ๊ธฐ๋ฅ ๊ตฌํํ๋ฉฐ ๋ฐฐ์ด documentElement.clientWidth๋ฅผ ํ์ฉํ์ฌ ๋ง๋ ํ์ด์ง ๋๊ธฐ๊ธฐ ๋ฒํผ!ํ๋ฉด ์ฌ์ด์ฆ๋ฅผ ๊ตฌํด์์ ๊ฐ ์นด๋์ ๋ฐ์ดํฐ๋ฅผ ๋ช ๊ฐ์ฉ ๊ฐ์ ธ์์ผ ํ๋์ง ๊ณ์ฐ ํ ํ Prev/Next Btn ํด๋ฆญํ ๋ ๋ง๋ค ํด
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค๋ฉ์ธ ํ์ด์ง๋ฅผ ์์ ํ๋ฉด์ ๋ฐฑ์๋์ ํต์ ํ๋ ์ผ์ด ๋ค๋ฅธ ํ์ด์ง์ ๋นํด ์ ์๋๋ฐ, ์ด๋ฒ ์์ ์ ํ๋ฉด์ ํ ํฐ์ ๋ฐ์์์ ๋ฐฑ์๋์ ์ฃผ๊ณ ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์๋ค.๐ํผ์ ์์ ์ ํ์ ๋์๋ ๋น๊ต๋ ์ ๋๊ฒ ๋ฟ๋ฏํ ์๊ฐ์ด
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค1์ฐจ ํ๋ก์ ํธ์์ ์ ค ์ ์ ํ๋ ์ฝ๋๐ ์๊ฐ๋ณด๋ค ์๊ฐ ์ค๋๊ฑธ๋ฆฌ์ง ์์์ ๋ ๋ฟ๋ฏํ๋ ์ฝ๋!this.myRef = React.createRef(); ๋ฅผ ์ฌ์ฉํด๋ณธ ์ฝ๋! react์์ ์์ ์ ํ์ ์ฌ์ฉํ๋ค.event๋ณ ๊ธฐ๋ฅ ๊ตฌํ. ํ์ ์ ํ ์
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋คroute + -ing : ๊ฒฝ๋ก(route)๋ฅผ ์ฐพ์๊ฐ๋ ํ์์ฆ ๋ผ์ฐํ ์ด๋, ๋ค๋ฅธ ๊ฒฝ๋ก(url ์ฃผ์)์ ๋ฐ๋ผ ๋ค๋ฅธ View(ํ๋ฉด)๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ. React Router์ ํด์ง ๊ฒฝ์ฐ(์ ์ , static)์ ๋ํด์๋ง ๊ฒฝ๋ก๋ฅผ ํํ๋์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ฒ
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค2์ฐจ ํ๋ก์ ํธ ์ค GoToTop Btn ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ฐ, ๋ฉํ ๋์ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณธ๋ค.A modern JavaScript utility library delivering modularity, perfor
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ํ <span style="color:๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ ๋ง์ ํ๋ก์ ํธ์์ ๋ฆฌ๋์ค๋ ๊ฐ์ด ์ฌ์ฉํ๋๋ฐ, ๊ทธ ์ด์ ๋์ปดํฌ๋ํธ ์ฝ๋์ ์ํ ๊ด๋ฆฌ ์ฝ๋์ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ SSR์ ๋ฐ์ดํฐ ์ ๋ฌ์ด ๊ฐํธํ๋ค๋ฆฌ์กํธ ์ปจํ ์คํธ๋ณด๋ค ํจ์จ์ ์ธ ๋
๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ์ต๋๋ค์์ฝ๋ ๋ค๋ ๋ ๋ค์ด๋ณด๊ธด ํ์ง๋ง ์์ง ์ ์จ๋ณธ..์์ผ๋ก ๋ง์ด ์ฌ์ฉํ๊ฒ ๋ axios์ ๋ํด ๊ณต๋ถํ ๋ด์ฉ ์ ๋ฆฌํด๋ณธ๋ค.<span style="color:>๋ฐฑ์๋์ ํ๋ก ํธ์๋๋ ํต์ ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ธ๋ผ
useRef() ์ ๋ฆฌํ๊ธฐ
ํน์ ๊ฒฐ๊ณผ๊ฐ์ ์ฌ์ฌ์ฉํ ๋ ์ฌ์ฉํ๋ useMemo, ํน์ ํจ์๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๋ useCallback, ์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง ๋ฐฉ์ง๋ React.memo
Context API ๋ก ์ํ ๊ด๋ฆฌํ๊ธฐ
์ปดํฌ๋ํธ์ ์ํ๊ฐ์ ๋ฆฌ๋์ค์ฒ๋ผ ๊ด๋ฆฌํ๊ธฐ:
ํ์ด์ค๋ถ์ด ๋ง๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ Recoil
ํ๋ก์ ํธ ์ , axios์ react-query ์ฌ์ฉํด๋ณด๊ธฐ ์ฐ์ต!
infinite scroll์์ scroll์ด ํน์ ํฌ์ง์ ์ ์ง๋๊ฐ ๋, ์์ดํ ์ ์ถ๊ฐ๋ก ๋ก๋ํ๊ธฐ ์ํด ํ์ํ Intersection Observer API.
FEConf Korea์ ์์์ ๋ณด๋ฉด์ ๊ธฐ๋กํ๋, React ์ปดํฌ๋ํธ, ๋ค์ ์๊ฐํ๊ธฐ!!