๐ธ React๋?
ํ์ด์ค๋ถ์์ ๊ฐ๋ฐํ๊ณ ๊ด๋ฆฌํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ง๋ค๊ธฐ ์ํ Javascript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
๐ธ React์ ์ฅ์
- Javascript ๊ฐ์ฒด ํํ์ Virtual DOM์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
- Server & Client ์ฌ์ด๋ rendering ์ง์์ ํตํด ๋ธ๋ผ์ฐ์ ์ธก์ ์ด๊ธฐ ๋ ๋๋ง ๋๋ ์ด๋ฅผ ์ค์ด๊ณ SEO ํธํ๋ ๊ฐ๋ฅํด์ง๋ค.
- ๐ฅ ๋ ๋๋ง(Readering)์ด๋?
html ์์(element), ๋๋ React ์์ ๋ฑ์ ์ฝ๋๊ฐ ๋์ผ๋ก ๋ณผ ์ ์๋๋ก ๊ทธ๋ ค์ง๋ ๊ฒ. - ์ปดํฌ๋ํธ์ ๊ฐ๋
์ฑ์ด ๋งค์ฐ ๋๊ณ ๊ฐ๋จํ์ฌ ์ฌ์ด ์ ์ง๋ณด์, ๊ฐํธํ UI ์์ ๋ฐ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๋ค.๐ฅ ์ปดํฌ๋ํธ(Component)๋?
์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ UI ๋จ์.
props๋ฅผ input์ผ๋ก ํ๊ณ UI๊ฐ ์ด๋ป๊ฒ ๋ณด์ฌ์ผ ํ๋์ง ์ ์ํ๋ React Element๋ฅผ output์ผ๋ก ํ๋ ํจ์.
์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๋ก ๊ด๋ฆฌํ ์ ์๋ค.
์ปดํฌ๋ํธ๋ ํจ์๋ ๋น์ทํ๋ค.
์ปดํฌ๋ํธ๋ input์ ๋ฐ์์ return ํ ์ ์๋ค.
(๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์๋ input์ props๋ผ๊ณ ๋งํ๋ค.) - ๋ฆฌ์กํธ๋ ํ๋ ์์ํฌ๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ๋ ์์ํฌ์ ํผ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฐฐ์ฐ๊ธฐ๊ฐ ๊ฐ๋จํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ๋ ๋ณต์กํ๋ค.
- Controller, directive, template, model ์ฒ๋ผ ๋ถ๋ฆฌ๋ฅผ ํ์ง ์๊ณ ์ปดํฌ๋ํธ ๋จ ํ๋๋ก ๊ด๋ฆฌํ๋ค.
- ๋ฐ์ด๋ Garbage Collection, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
๐ธ React์ ํน์ง
๐ท ์์ฑ๊ณผ์ ๋จ๋ฐฉ์ฑ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
๋ณดํต props๋ผ ๋ถ๋ฆฌ๋ ์์ฑ๋ค์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ปดํฌ๋ํธ์ ์ ๋ฌ๋๋ค.
์ปดํฌ๋ํธ๋ค์ props๋ฅผ ํ๋์ ๋ถ๋ณ์ ๊ฐ(Javascipt ๊ฐ์ฒด)๋ค๋ก ๋ฐ๋๋ค.
๐ท Stateful Component
์ํ๋ฅผ Component๋ฅผ ํตํด ๊ฐ์ ๋ณด๊ดํ๋ฉฐ props๋ฅผ ํตํด Child Component๋ก ์ ๋ฌํ ์ ์๋ค.
๐ท Virtual DOM
๋ฆฌ์กํธ๋ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์บ์๋ฅผ ๋ง๋ค๊ณ ๊ฒฐ๊ณผ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ ๋ค์ ๋ธ๋ผ์ฐ์ ์ ํ์๋๋ DOM์ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. ์ด๋ก์จ ๊ฐ๋ฐ์๋ ๋ง์น ๋ชจ๋ ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ ๋๋ง๋๋ ๊ฒ์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ฐ, ์ค์ ๋ก ๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋จ์ง ์ค์ ๋ก ๋ณ๊ฒฝ๋๋ ํ์ ์ปดํฌ๋ํธ๋ง์ ๋ ๋๋งํ ๋ฟ์ด๋ค.
๐ท Lifecycle Method
๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ค์ ์ปดํฌ๋ํธ๊ฐ ์์กดํ๋ ๋์ ์ ํฌ์ธํธ(set point)์ ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ํ๋ ํ (hook)์ด๋ค.
- shouldComponentUpdate๋ ๋ ๋๊ฐ ๋ถํ์ํ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๊ฐ ์ปดํฌ๋ํธ์ ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ๋ง์ ์ ์๊ฒ ํ๋ค.
- componentDidMount๋ ์ปดํฌ๋ํธ๊ฐ '๋ง์ดํธ'(mount)๋๋ฉด ํธ์ถ๋๋ค. (๋๊ฐ ์ปดํฌ๋ํธ DOM ๋ ธ๋์ ์ฐ๊ฒฐํจ์ผ๋ก์จ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ ๋ง๋ค์ด์ง๋ค) API๋ฅผ ํตํด ์๊ฒฉ ์์ค๋ก๋ถํฐ ๋ก๋๋๋ ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌ๊ฑฐ(trigger)ํ๊ธฐ ์ํด ๋ณดํต ์ฌ์ฉ๋๋ค.
- render๋ ๊ฐ์ฅ ์ค์ํ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋์ด๋ฉฐ ์ด๋ ํ ์ปดํฌ๋ํธ์์๋ ์ต์ํ์ ํ์ ์กฐ๊ฑด์ด๋ค. ์ปดํฌ๋ํธ์ ์ํ๊ฐ ์ ๋ฐ์ดํธ๋ ๋๋ง๋ค ํธ์ถ๋๋ ๊ฒ์ด ๋ณดํต์ด๋ฉฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ๋ค.
๐ท JSX
JSX(JavaScript XML)๋ XML๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ECMAScript์ ํ์ฅ์ด๋ค. HTML๊ณผ ๋ชจ์ต์ด ๋น์ทํด ๋ณด์ด๋ JSX๋ ์๋ง์ ๊ฐ๋ฐ์๋ค์๊ฒ ์น์ํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ ๋ ๋๋ง์ ๊ตฌ์กฐํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ค์ ์ผ๋ฐ์ ์ผ๋ก JSX๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋์ง๋ง ๊ผญ ๊ทธ๋ ๊ฒ ํ ํ์๋ ์๋ค. (์ปดํฌ๋ํธ๋ค์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ ์๋ ์๋ค)
JSX๋ PHP๋ฅผ ์ํด ํ์ด์ค๋ถ์ด ๊ฐ๋ฐํ ๋ค๋ฅธ ํ์ฅ ๋ฌธ๋ฒ์ธ XHP์ ์ ์ฌํ๋ค.
๐ท ๋ด์ ๋(nested) ์์
๊ฐ์ ๋ ๋ฒจ์ ์ฌ๋ฌ ์์๋ค์ ์์ ๊ฐ์ด <div> ์์์ ๊ฐ์ด ํ๋์ ์ปจํ ์ด๋ ์์๋ก ๊ฐ์ธ๊ฑฐ๋ ๋ฐฐ์ด๋ก ๋ฐํํด์ผ ํ๋ค.
๐ท ์์ฑ(attributes)
JSX๋ HTML์ด ์ ๊ณตํ๋ ๊ฒ์ ๋ฏธ๋ฌ๋งํ๋๋ก ์ค๊ณ๋ ์ผ๋ จ์ ์์ ์์ฑ๋ค์ ์ ๊ณตํ๋ค. ์ฌ์ฉ์ ์ง์ ์์ฑ๋ค์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ ์๋ ์๋ค. ๋ชจ๋ ์์ฑ์ ์ปดํฌ๋ํธ๋ฅผ props๋ก ๋ฐ๋๋ค.
๐ท ๋จ์ HTML ๋ ๋๋ง ๊ทธ ์ด์์ ์ํคํ ์ฒ
๋ฆฌ์กํธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ ๋๋ง๋๋ HTML์ ๋์ด์ ์ ์ฉ๋๋ค. ์ด๋ฅผํ ๋ฉด ํ์ด์ค๋ถ์ <canvas> ํ๊ทธ์ ๋ ๋๋งํ๋ ๋์ ์ธ ์ฐจํธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ทํ๋ฆญ์ค์ ํ์ดํ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ชฝ์ ์ ์ฌ HTML์ ๋ ๋๋งํ๊ธฐ ์ํ ๋์ผ ๊ตฌ์กฐ์ ์ ์ฌ(isomorphic loading)๋ฅผ ์ฌ์ฉํ๋ค.
๐ท ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ 2015๋ ์ ํ์ด์ค๋ถ์ ์ํด ๋ฐํ๋์์ผ๋ฉฐ ๋ค์ดํฐ๋ธ ์๋๋ก์ด๋, iOS, UWP ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์กํธ ์ํคํ ์ฒ๋ฅผ ์ ์ฉํ๋ค.
'JavaScript > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ๋ผ์ฐํ (Routing)์ด๋? (0) | 2021.11.24 |
---|---|
[React] 10๊ฐ์ง Hooks (0) | 2021.11.24 |
[React] State & Event (0) | 2021.11.18 |
[React] Props & Event (0) | 2021.11.18 |
[React] map ํจ์ ์ ์ฉ์ key props๋ฅผ ๋ถ์ฌํ๋ ์ด์ (0) | 2021.11.18 |
๋๊ธ