๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐Ÿ“š Language & CS knowledge/React (13)

Daehyunii's Dev-blog

์ปดํฌ๋„ŒํŠธ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ

๋ฆฌ์•กํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด? ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋˜๋Š” ์ด๋ จ์˜ ๊ณผ์ •์„ ๋ผ์ดํ”„ ์‚ฌ์ดํด์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” Hooks ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์Šทํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋Š” ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์•กํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฏ€๋กœ '์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ์žˆ๊ตฌ๋‚˜'ํ•˜๊ณ  ๋Š๋ผ๊ณ  ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๋น„์Šทํ•˜๊ฒŒ Hooks๋กœ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ๋น„๊ตํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์˜ค๋Š˜์€ classํ˜• ์ปดํฌ๋„ŒํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ๋“ค์— ๋Œ€ํ•ด์„œ๋งŒ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์šฐ์„  ๋ผ์ดํ”„์‚ฌ์ดํด์€ ์ด ์„ธ ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 1. ๋งˆ์šดํŠธ DOM์ด ์ƒ์„ฑ๋˜๊ณ  ์›น ๋ธŒ๋ผ์šฐ์ €์ƒ์— ๋‚˜ํƒ€๋‚  ๋•Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 2. ์—…๋ฐ์ดํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€..

์ปดํฌ๋„ŒํŠธ ๋ฐ˜๋ณต

map( ) ํ•จ์ˆ˜์˜ ํ™œ์šฉ map ํ•จ์ˆ˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด ๋‚ด ๊ฐ ์š”์†Œ๋ฅผ ์›ํ•˜๋Š” ๊ทœ์น™์— ๋”ฐ๋ผ ๋ณ€ํ™˜ํ•œ ํ›„ ๊ทธ ๊ฒฐ๊ณผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค. map( ) ํ•จ์ˆ˜์˜ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค. ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ๋Š” (value, index, array) ์„ธ ๊ฐ€์ง€๋ฅผ ๋ฐ›๋Š”๋‹ค. -value: ํ˜„์žฌ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ๋Š” array์š”์†Œ ๊ฐ’ -index: ํ˜„์žฌ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ๋Š” array์š”์†Œ์˜ index๊ฐ’ -array: ํ˜„์žฌ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด ๊ทธ ์ž์ฒด ex) array.map((value,index,array) => { }) ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” callback ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  this ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ฐ›๋Š”๋‹ค. const numbers = [1, 2, 3, 4, 5]; cons..

ref: DOM์— ์ด๋ฆ„ ๋‹ฌ๊ธฐ

ref : DOM์— ์ด๋ฆ„ ๋‹ฌ๊ธฐ 1. ref๋Š” ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ? ref๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ ํ•œ ๋ฌธ์žฅ์œผ๋กœ 'DOM์„ ๊ผญ ์ง์ ‘์ ์œผ๋กœ ๊ฑด๋“œ๋ ค์•ผ ํ•  ๋•Œ'์ด๋‹ค. ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ DOM ์š”์†Œ๋ฅผ ์กฐ์ž‘ํ•˜๋Š”๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” DOM์„ ์ง์ ‘ ๊ฑด๋“œ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์•˜์ง€๋งŒ, ๋ฆฌ์•กํŠธ์—์„œ๋Š” ๊ตณ์ด DOM์— ์ ‘๊ทผํ•˜์ง€ ์•Š์•„๋„ state๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. 2. DOM์„ ๊ผญ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ ์–ธ์ œ์ผ๊นŒ? ํŠน์ • input์— ํฌ์ปค์Šค ์ฃผ๊ธฐ ์Šคํฌ๋กค ๋ฐ•์Šค ์กฐ์ž‘ํ•˜๊ธฐ canvas ์š”์†Œ์— ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋“ฑ ๋งŽ์€ ์ƒํ™ฉ์ด ์žˆ๊ณ  ์–ด์ฉ” ์ˆ˜ ์—†์ด DOM์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ref๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 3. ref ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ref๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํด๋ž˜์Šคํ˜•๊ณผ ํ•จ์ˆ˜ํ˜•์— ๋”ฐ๋ผ ์ž‘์„ฑ ๋ฐฉ๋ฒ•..

์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง

๋ฆฌ์•กํŠธ์˜ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ ๋ฆฌ์•กํŠธ์˜ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์€ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ HTML ์ด๋ฒคํŠธ์™€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋ฒ•์ด ๊ฝค ๋น„์Šทํ•˜๋‹ค. ๋‹ค๋งŒ ์ฃผ์˜ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ๋ช‡ ๊ฐ€์ง€ ์กด์žฌ ํ•œ๋‹ค. ์ด๋ฒคํŠธ ์ด๋ฆ„์€ ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HTML์˜ onclick์€ ๋ฆฌ์•กํŠธ์—์„œ๋Š” onClick์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฒคํŠธ์— ์‹คํ–‰ํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•จ์ˆ˜ ํ˜•ํƒœ์˜ ๊ฐ์ฒด ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค. DOM ์š”์†Œ์—๋งŒ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง์ ‘ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ์— ์ด๋ฒคํŠธ๋ฅผ ์ž์ฒด์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— onClick ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๊ทธ๋ƒฅ ์ด๋ฆ„์ด onClick์ธ props๋ฅผ ์ „๋‹ฌํ•ด ์ค„ ๋ฟ์ด๋‹ค. input ์—ฌ๋Ÿฌ ๊ฐœ ๋‹ค๋ฃจ๊ธฐ setState๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์–ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์„ ์ˆ˜ ..

์ปดํฌ๋„ŒํŠธ ํŠน์ง•๋“ค

ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด์  1. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ state ๊ธฐ๋Šฅ, ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ธฐ๋Šฅ์˜ ์‚ฌ์šฉ ๋ฐ ์ž„์˜ ๋ฉ”์„œ๋“œ ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 2. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ๋œ ์‚ฌ์šฉํ•œ๋‹ค.(์œ ์˜๋ฏธํ•œ ์ฐจ์ด๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํ•จ) 3. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐฐํฌํ•  ๋•Œ ๊ฒฐ๊ณผ๋ฌผ์˜ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘๋‹ค.(์œ ์˜๋ฏธํ•œ ์ฐจ์ด๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํ•จ) 4. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ์—๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ธฐ๋Šฅ ๋Œ€์‹  Hooks๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค. props ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •: defaultProps ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ€ํ„ฐ prop์„ ์ „๋‹ฌ ๋ฐ›์ง€ ์•Š์€ ๊ฒฝ์šฐ์— defaultProps๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. const MyComponent = (props) => { return ์•ˆ๋…•ํ•˜์„ธ..

JSX๋ž€?

JSX๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋ฉฐ XML๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค. ์šฐ์„  JSX๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๊ธฐ ์ „ ๋ฒˆ๋“ค๋ง๋˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ”๋ฒจ์„ ํ†ตํ•ด ์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž. JSX function App() { return ( Hello react ) } ๋ณ€ํ™˜ function App() { return React.createElement("div", null, "Hello", React.createElement("b", null, "react")) } ์ด ์ฒ˜๋Ÿผ JSX๋ฅผ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๋Š” JavaScript๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋“ค์„ ๊ฐ„๋žตํ•˜๊ณ  ์‹œ๊ฐ์ ์œผ๋กœ๋„ ๋ณด๊ธฐ ์ข‹๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•œ ๋งˆ๋””๋กœ JSX๋Š” ๋ณด๊ธฐ ์‰ฝ๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ ํ˜•ํƒœ๋กœ ์ž‘์„ฑ๋œ๋‹ค. ๋˜ํ•œ JSX ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ..