-
React :: React ์์ํ๊ธฐPROGRAMMING/React 2021. 3. 20. 00:27
React ๋ฅผ ์ฒ์ ์์ํ๋ ค๋ฉด, ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ๊ณต์ ์น์ฌ์ดํธ์์๋ ์๊ฐํ๋ CRA (Create React App) ์ ์ฌ์ฉํด๋ณด์.
React ๋ ๋ฌด์์ด๊ณ , ๋ญ ์๊ณ ์์ด์ผ ํ ๊น?
React ๋ ํ์ด์ค๋ถ์์ ์ ๊ณตํ๋ JavaScript ๊ธฐ๋ฐ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ค.
ํ๋ ์์ํฌ๊ฐ ์๋๋ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ์, ๊ทธ๋งํผ ๊ฐ๋ณ๊ณ ์ ํ์ง๊ฐ ๋๋ค.
JavaScript ๊ธฐ๋ฐ์ด๋ผ JavaScript ๋ฅผ ์๋ฉด ๋ฐฐ์ฐ๊ธฐ ์ฝ๋ค. ๋ฐ๋ฉด์ ๋ชจ๋ฅธ๋ค๋ฉด ์ข ์ ๋จน์ ์ ์๋ค.
๊ทธ๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ํ ๋์ฑ - ๊ณต์ js ํํ ๋ฆฌ์ผ ์๋ ํ๊ธฐ :
developer.mozilla.org/ko/docs/Web/JavaScript/A_re-introduction_to_JavaScript
(์๋ฒฝํ ๋์ฑ ์ด ๋๊ธฐ๋ ์ด๋ ต๋ค. ๋ค๋ง ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์๊ณ ์๋ ์ฌ๋์ด๋ผ๋ฉด, ์ด ์ ๋๋ฅผ ๋ณด๊ณ ์ด๋์ ๋ ์ปค๋ฒ๊ฐ ๊ฐ๋ฅํ ์๋ ์๊ฒ ๋ค. ๊ทธ๋ ์ง๋งJavaScript ๋ Java ์ ์์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํผ๋ํ๊ณ Java ๋ฅผ ์๋๊น ์ฌ์ธ ๊ฒ์ด๋ผ๋ ์๊ฐ์ ๊ธ๋ฌผ!)
์์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ผ๋๊ณ ์ง์ ํด๋ณด๋ฉด์ ์๋ ํ์. 1~2์๊ฐ ์ ๋ ๊ฑธ๋ฆฐ๋ค.
๋ค์์ผ๋ก React ๋ฅผ ์ ์ฌ์ฉํ๋์ง, ๋ React ๋ฅผ ์์ํ๊ธฐ ์ ์ ์์๋๋ฉด ์ข์ React ์ ํน์ง ๋ช ๊ฐ์ง๋ฅผ ์์๋ณด์.
JSX
๊ณผ๊ฑฐ ํ์ด์ค๋ถ์ด PHP ๋ฅผ ๊ฐ๋ํด ๋ง๋ค์๋ XHP ์ ๊ธฐ์์ ๋๊ณ ์๋ ํ๋์ JavaScript ๋ฌธ๋ฒ์ด๋ค
(JavaScript ๊ฐ ์๋๋ค! ํ์ง๋ง ์๋ฉด ๋ฐฐ์ฐ๊ธฐ ์ฌ์ด..)
์ด๋ ๋์ค์ ์์ธํ ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค. ์ง๊ธ์ ๊ฐ๋ ๋ง!
Vrtual DOM
React ๋ ์ด๋ฒคํธ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ Model ์ ๋ณํ๊ฐ ์๊ธฐ๋ฉด Virtual DOM ์ ์์ฑํ์ฌ ์ค์ DOM ๊ณผ ๋น๊ตํ ํ, ๋ณํ๊ฐ ๋ฐ์ํ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ๋ค.
์ด๋ ์๋นํ ํจ์จ์ ์ธ๋ฐ, ๋ชจ๋ ๋ถ๋ถ์ ์๋กญ๊ฒ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ '๋ณ๊ฒฝ๋ ๋ถ๋ถ'๋ง ์ฐพ๊ณ ๋ฐ๊พธ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ํ์ํ ๊ณณ์๋ง ์ ๋ฐ์ดํธํ๋ค.
Component ๊ธฐ๋ฐ
React ๋ ์กฐ๊ฐ์ ๋ชจ์์ ์ ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ธ๋ฐ, ๊ทธ ์กฐ๊ฐ์ด Component ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ฌ์ฌ์ฉํ๋ ์ฝ๋ ๋ญ๋น ์์ด, ํ๋์ Component ๋ฅผ ๋ง๋ค์ด๋๊ณ ์ฌ์ฉํ ๋ถ๋ถ์ ๊ฐ์ ธ์์(import) ์ฌ์ฉํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๋ํ ์กฐ๊ฐ์ผ๋ก ๊ด๋ฆฌํ๋ฏ๋ก ์ฝ๋์ ์ ์ง ๋ณด์๊ฐ ์ฉ์ดํ๋ค.
์ฐธ๊ณ ๋ก,
์ด๋ ๊ฒ '์กฐ๊ฐ'์ผ๋ก ๋๋์ด์ ๊ฐ๋ฐํ๋ ๊ฒ์ MVC (Model-View-Controller) ํจํด, MVVM (Model-View-ViewModel) ํจํด์ด๋ผ๊ณ ํ๋ค. (์ํํธ์จ์ด ๋์์ธ ํจํด์ ์ผ์ข )
์ด๋ฆ์์ ์ ์ ์๋ฏ Model-View-Controller ์ '์กฐ๊ฐ'๋ค์ด ๋ชจ์ฌ ํ๋์ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ํ๋๋ก ๋ง๋๋ ๋ฐฉ์์ด๋ค.
- Model: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ณด(data)
- View: UI (User-Interface)
- Controller : ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง ์ฌ์ด์ ์ํธ์์ฉ ๊ด๋ฆฌ!
์ฆ, React ๋ View ๋ฅผ ๋ง๋ค๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋๊ฒ ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋จ์๊ฐ Component ์ด๋ค.
Props ์ State
์ด ๋์ React ๋ฅผ ๋ค๋ฃจ๋ ค๋ฉด ์ ์๊ณ , ์ ์ค๊ณํด์ ๊ตฌ์ฑํด์ผ ํ๋ ๋ ์์์ด๋ค.
์ด๋ค ์์์ ๋๊ฐ ์ด๋๊น์ง ์ ๊ทผ ๊ฐ๋ฅํ์ง์ ๋ํ ๊ฒ์ด๋ค.(ex. ๋ด๋ถ ์ปดํฌ๋ํธ์๋ ์ด๋ค state, ์ธ๋ถ ์ปดํฌ๋ํธ์์ ์ด๋ค Props ๋ฅผ ๋๊ฒจ์ค์ง ๋ฑ๋ฑ..)
์ด ์ญ์ ๋์ค์ ์์ธํ ๋ค๋ฃจ๊ฒ ๋ค. ์ง๊ธ์ ์ธ๋ถ์ ๋ด๋ถ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ ๋ผ๋ ์ ๋๋ง ์๋ฉด ๋๋ค.
(์ฒ์๋ถํฐ ๋ง์ ๊ฐ๋ ์ ๋ณด๋ฉด ๋จธ๋ฆฌ ์ํ๋๊น..)
์ด์
๋๋์ด์ง์ง๋ก React ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ๋ฅผ ์์ํด๋ณด์.Create React App (CRA)
(๊ณต์ ๋ฌธ์: ko.reactjs.org/docs/create-a-new-react-app.html)
CRA ๋ React ๋ฅผ ๋ฐฐ์ฐ๊ธฐ์ ๊ฐํธํ ํ๊ฒฝ์ผ๋ก, ์๋ก์ด ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด์ค๋ค.
์ด๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์๋ Node.js ์ npm ์ด ์ค์น๋์ด ์์ด์ผ ํ๋ค.
(Node.js ์ค์นํ๊ธฐ (https://nodejs.org/ko/download/)
๊ทธ๋ฆฌ๊ณ ์ปค๋งจ๋ ์ฐฝ(cmd)์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ด๋ค์ ์คํ์์ผ ์ฃผ์.
npx create-react-app my-app cd my-app npm start
๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋๋ ํ ๋ฆฌ์์ my-app ์ด๋ผ๋ ํด๋๋ก ์ react app ์ ๋ง๋ค์ด์ค๋ค.
๊ทธ๋ฆฌ๊ณ my-app ํด๋์์ $ npm start ๋ฅผ ํ๋ฉด react ๊ฐ ์์๋๋ค.
์ด๋ฐ ํ์ด์ง๊ฐ ๋จ๋ฉด ์ ๋ ๊ฒ์ด๋ค.
๐React ๋ก App ์ ํ๋ ๋ง๋ค์๋ค!
์ด์ ์ด๊ฑธ ๊ฐ์ง๊ณ ์ด๊ฒ์ ๊ฒ ํด๋ณด๋ฉด์ React ๋ฅผ ๋ฐฐ์๊ฐ์.
Ref.
React ๊ณต์ ๋ฌธ์ ko.reactjs.org/docs/create-a-new-react-app.html
.
'PROGRAMMING > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React :: Hook, useState, useEffect, ์ฌ์ฉ์ ์ ์ Hook (0) 2021.03.31 React :: ์๋ช ์ฃผ๊ธฐ (Lifecycle) (0) 2021.03.21 React :: Component, Props, State (0) 2021.03.20 React :: Element Rendering (์๋ฆฌ๋จผ๋ ๋ ๋๋ง) (0) 2021.03.20 React : JSX (0) 2021.03.20