๐Ÿ’ปDEV-STUDY/React

์ œ์–ด ์ปดํฌ๋„ŒํŠธ์™€ ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ๋‚ด๋ถ€ ๋ณ€์ˆ˜ ์—ญํ• ์„ ํ•˜๋Š” State & ํŒŒ๋ผ๋ฏธํ„ฐ ์—ญํ• ์„ ํ•˜๋Š” Props & React ๋…๋ฆฝ์  RefReact Hook ์€ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ณ  ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋„์ž…ํ–ˆ๋‹ค.๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ์ƒ๊ฐํ•œ๋‹ค๋ฉด, State & Props & Ref ์„ธ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฝ๋‹ค.  1. State: ๋‚ด๋ถ€ ๋ณ€์ˆ˜ (์ œ์–ด ์ปดํฌ๋„ŒํŠธ)State๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜๋กœ, React์—์„œ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค.State ๋ณ€๊ฒฝ ์‹œ ๋ฆฌ๋ Œ๋”๋ง ๋ฐœ์ƒ: React๋Š” state๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜์—ฌ UI๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ๋‹ค.๋‚ด๋ถ€ ๋ณ€์ˆ˜์˜ ์˜๋ฏธ:State๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ๋งŒ ๊ด€๋ฆฌ๋˜๋ฉฐ, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ง์ ‘ ์ ‘๊ทผํ•  ..
React ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •1. Vite๋ฅผ ํ†ตํ•œ React ์•ฑ ์„ค์ •๊ณผ๊ฑฐ์—๋Š” CRA(Create-React-App)์„ ์‚ฌ์šฉํ•ด React์•ฑ์„ ์ƒ์„ฑํ–ˆ์œผ๋‚˜, ํ˜„์žฌ๋Š” Deprecated ๋˜์—ˆ๋‹ค. React ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ CRA ๋Œ€์‹  CNA(Create-Next-App)์„ ์ถ”์ฒœํ•˜์ง€๋งŒ, ์•„์ง Next.js ์‹ค์Šต๋‹จ๊ณ„๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— Vite๋กœ React ์•ฑ์„ ์„ค์ •ํ•  ์˜ˆ์ •์ด๋‹ค. 1-1. Vite๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ช…๋ น์–ดnpm create vite@latest react-tutorial -- --template react 1-2. Node ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ nvm ์„ค์น˜1. nvm ์„ค์น˜ ๋ช…๋ น์–ดcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh ..
"์ปดํฌ๋„ŒํŠธ"๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋Š์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ ์œ ๋‹›์œผ๋กœ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.const element = Hello, world!;"์œ„์— ํฌํ•œํ•œ ํƒœ๊ทธ ๋ฌธ๋ฒ•์€ ๋ฌธ์ž์—ด๋„, HTML๋„ ์•„๋‹™๋‹ˆ๋‹ค." React๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ง€๋งŒ, ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ JSX ๋ฌธ๋ฒ•, ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ, Virtual DOM(VDOM), ๋ Œ๋” ์‚ฌ์ดํด์ด React์˜ ์ฃผ์š” ํŠน์ง•์ด๋‹ค. JSX ๋ฌธ๋ฒ•JSX๋Š” JavaScript XML ๋˜๋Š” JavaScript Syntax Extension์œผ๋กœ ๋ถˆ๋ฆฐ๋‹ค. JSX๋Š” JavaScript์™€ XML(๋˜๋Š” HTML)์š”์†Œ๋ฅผ ๊ฒฐํ•ฉํ•œ ๋ฌธ๋ฒ•์œผ๋กœ, React์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ JavaScript ์ฝ”๋“œ ๋‚ด์—์„œ HTML ์š”์†Œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งˆํฌ์—…๊ณผ..
์›น ํ”„๋ก ํŠธ์—”๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋ ˆ์ž„์›Œํฌ, React์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณต์žกํ•œ ์ƒํƒœ๊ณ„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ทธ ์ž์ฒด๋กœ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹Œ ์–ธ์–ด์— ๋ถˆ๊ณผํ•˜๋‹ค. ์›น ๊ฐœ๋ฐœ์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์„œ๋กœ ์ตœ๊ณ ๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ๋“ค์ด ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ถœํ˜„ํ•˜๊ณ ์žˆ๋‹ค.React.js๋„ ์ด๋Ÿฌํ•œ ๋ฐฐ๊ฒฝ์—์„œ ๋“ฑ์žฅํ•œ ์›น ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ํŠนํžˆ, React๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์œ„์น˜๋ฅผ ์ฐจ์ง€ํ•˜๋ฉฐ, ์‚ฌ์‹ค์ƒ Java์ฒ˜๋Ÿผ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์— ํ‘œ์ค€์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ์‹œ์ž‘์— ์•ž์„œ ์ด์ „์— ํฌ์ŠคํŒ…ํ•œ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์ž. (์˜ˆ์ „ ์ž‘์„ฑ ๊ธ€์ด๋ผ ๊ฐ€๋…์„ฑ์ด ๋ณ„๋กœ ์•ˆ์ข‹์•„์„œ ์ด ๊ธ€์—์„œ ๋‹ค์‹œ ์ •๋ฆฌ)https://1000sang-dev.tistory.com/13 ํ”„๋ก ํŠธ ์›น ๊ฐœ๋ฐœ์˜ ํ•„์ˆ˜ ๊ฐœ๋…: ์ž๋ฐ”์Šคํฌ๋ฆฝ..
"ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋‹ค์ˆ˜์˜ DOM ๋ณ€๊ฒฝ" ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ Rerendering์›น ํŽ˜์ด์ง€์˜ ๋ Œ๋”๋ง์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด์„ ๋ฐ”๊พธ๋Š” ์ž‘์—…์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ, ์›น ํŽ˜์ด์ง€์˜ ํ™”๋ฉด์ด ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋ ๊นŒ ? 1. Javascript๋ฅผ ํ†ตํ•œ HTML(DOM) ์ง์ ‘ ์กฐ์ž‘์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTML์˜ DOM์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜์—ฌ ํŽ˜์ด์ง€์˜ ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.์ด๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์— ๋‹ค์–‘ํ•œ ๋ณ€ํ™”๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” DOM์„ ์กฐ์ž‘ํ•˜์—ฌ ํ™”๋ฉด์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ํ™”๋ฉด์˜ ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜์—ฌ ํŽ˜์ด์ง€์˜ ์š”์†Œ๋“ค์„ ์ง์ ‘ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ Javascript๋ฅผ ํ†ตํ•ด ์ง์ ‘ DOM์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋‹จ์ ๋“ค์ด ์žˆ๋‹ค.HTML(DOM) ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ์ง์ ‘ ์กฐ์ž‘์„ ๊ฐ€ํ•ด์•ผํ•œ๋‹ค..
1000_sang
'๐Ÿ’ปDEV-STUDY/React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก