: ๋ง์ library๋ฅผ ์ด์ฉํด์ "UI rendering"์ ํ๋ค.
React๋ Client์์ interaction์ด ๋ง์ ๊ฒฝ์ฐ์ ์ ํฉํ๋ค.
React๋ framework๋ณด๋ค๋ Library์ ๊ฐ๊น๋ค.
platform, framework, library
- platform
๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์คํ ์์ผ ์ค ์ ์๋ ํ๋ก๊ทธ๋จ
: Java, Node- framework
: ์คํ ํ๋ฆ์ ๋ํ ์ ์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
React๋ component(React app์ ๊ตฌ์ฑํ๋ ์ต์ํ์ ๋จ์)์ ์งํฉ์ด๋ค.
๊ฐ component ๋ณ๋ก ๋ณ๋์ js ํ์ผ์ด ๋ง๋ค์ด์ง๊ฒ ๋๋ค.
component
1. classํ component
2. ํจ์ํ component: ๊ณผ๊ฑฐ์๋ classํ component๋ฅผ ์ฌ์ฉํ์๋ค. ํจ์ํ component๋ณด๋ค ๊ธฐ๋ฅ์ ๋ง์ง๋ง ์ฝ๋๋์ด ๋ง์์ ๋ณต์กํ๊ณ ์๋์ ์ผ๋ก ์๋๊ฐ ๋๋ฆฌ๋ค.
: ํจ์ํ component๋ ๊ธฐ๋ฅ์์ ์ ์ฝ์ด ์์ง๋ง classํ component์ ๋นํด ๊ฐ๊ฒฐํ๊ณ ์๋๊ฐ ๋น ๋ฅด๋ค.React Hooks๋ฅผ ํตํด ํจ์ํ component์ ๊ธฐ๋ฅ์ด ๊ฐ์ ๋๋ฉด์ ์ด์ ๋ classํ component๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
jQuery๋ ์ฝ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง 1. Maintenance(์ ์ง๋ณด์) 2. ์๋ ๋ฌธ์ ๊ฐ ์๋ค. ๋ง์ ์์ interaction์ด ์๋ ๊ฒฝ์ฐ ๋๋ ค์ง๋ค. jQuery๋ DOM์ ์ง์ ์ ์ดํ๊ธฐ ๋๋ฌธ์ DOM์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค repaint ๋๋ค.
=> Virtual DOM์ ์ด์ฉํด์ ์๋๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. (Rendering์ ์ฌ๋ฌ๋ฒ ํ์ง ์๋๋ก ํด์ค๋ค.)
: Javascript ํ์ฅ ๋ฌธ๋ฒ์ด๋ค. React๋ JSX๋ฅผ ์ด์ฉํ๋ค. JSX๋ฅผ ์ด์ฉํด์ UI๋ฅผ ํํํ๋ค.
HTML๊ณผ Javascript์ ํผํฉ์ด๋ผ๊ณ ํ ์ ์๋ค.
์๋๋ const str = "<H1> Hello World </H1>"; => Javascript ์ฝ๋
const str = <H1> Hello World </H1>; => JSX ์ฝ๋
Node.js ํ์ (npm) - ํ์ํ ๋ชจ๋๋ค์ ์ค์นํ๊ธฐ ์ํด ํ์ํ๋ค. React๊ฐ Node ์์์ ์คํ๋๋ ๊ฒ์ ์๋๋ค. Node.js ์ค์น
React Application ๋ง๋ค๊ธฐ
my-todo-app ํด๋ ์์ฑํ๊ณ , ํฐ๋ฏธ๋์์ ์ฐ๋ค. npx create-react-app . ๋ช
๋ น์ ์คํํ๋ค.
my-todo-app ํด๋๋ฅผ ์ฐ๋ค.
package.json
: ํ๋ก์ ํธ์ ๋ํ ๊ธฐ๋ณธ ์ ๋ณด
> npm install react-beautiful-dnd --save --legacy-peer-deps
Rendering์ ๋ํด์ ์๊ฐํด๋ณด์์ ๐ค
ํ์ฌ ์ฝ๋ ๋ฌธ์ : ๊ธ์๋ฅผ ์ ๋ ฅํ ๋๋ง๋ค rendering์ด ๋ค์ ๋๊ณ ์๋ค. ๋ณํ ํ์๊ฐ ์๋ ๋ถ๋ถ์ ๋ค์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ๋ญ๋น์ด๋ค. ์ด ๋ญ๋น๋ฅผ ์ค์ด๋ฉด ์๋๊ฐ ๋ ๋นจ๋ผ์ง ์ ์๋ค.
=> React.memo()๋ฅผ ์ฌ์ฉํด์ ํด๊ฒฐํ๋ค.
: ๋ค์ ๊ทธ๋ฆด ๋ ์ด์ ์ํ์ ๋น๊ตํด์ ๋ณํ๊ฐ ์๋ component๋ ๋ค์ ๊ทธ๋ฆฌ์ง ์๋๋ค.
=> useCallback()