๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

728x90

๋„์ „์„ ๋ฐฅ๐Ÿ™ ๋จน๋“ฏ์ด ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

(84)
๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ๋ง(CSS, Sass, Css Module, styled-components) ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํƒ€์ผ๋ง ๋ฐฉ์‹ 1. ์ผ๋ฐ˜ CSS : ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํƒ€์ผ๋งํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹ 2. Sass(Syntactically Awesome Style Sheets) (.scss, .sass) : CSS ์ „์ฒ˜๋ฆฌ๊ธฐ - ๋ณต์žกํ•œ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ณ  - ์Šคํƒ€์ผ ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ์„ฑ์„ ๋†’์—ฌ์คŒ - ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์คŒ. -> ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋”์šฑ ์‰ฝ๊ฒŒ ํ•ด์คŒ // ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ $red : #fa5252; $orange : #fd7e14; // ๋ฏน์Šค์ธ(์žฌ์‚ฌ์šฉ๋˜๋Š” ์Šคํƒ€์ผ ๋ธ”๋ก์„ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ) @mixin square($size){ $calcualated : 32px * $size; width: $calcualated; height: $calcualated; } .SassComponent{ .box{ // .S..
๊ฐ์ฒด(Object) ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹ 1 ) ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด, 2)์ƒ์„ฑ์ž ํ•จ์ˆ˜, 3) Object.create() ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๊ฐ์ฒด ์ƒ์„ฑ์‹œ, ์ปจํ…์ธ ๋ฅผ ๊ทธ๋Œ€๋กœ ๋Œ€์ž… ์—ฐ์†๋œ ๊ตฌ์กฐ์ฒด, ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ •ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ ์ž ํ• ๋•Œ ๋งŽ์ด์”€ ex) ์„œ๋ฒ„์—๊ฒŒ ์ฃผ์†Œ๋ฅผ DB์— ๋„ฃ์–ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ• ๋•Œ, ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ „์†กํ•œ๋‹ค. (๊ฐ ์•„์ดํ…œ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฐœ๋ณ„ ์ „์†กํ•˜์ง€ ์•Š์Œ) ํด๋ž˜์Šค new ์—ฐ์‚ฐ์ž๋กœ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ extends ํ‚ค์›Œ๋“œ๋กœ ์ƒ์† ํŠน์ • ๊ตฌ์กฐ์˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ณณ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํด๋ž˜์Šค๋กœ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด์ˆ˜ ํŽธ๋ฆฌํ•จ ๋“ฑ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1) ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด const person = { name: "๊ธธ๋™", age:21, printName(){ console.log(`${this.name}`) } } 1..
[์šฐํ…Œ์ฝ” 5๊ธฐ ํ”„๋ฆฌ์ฝ”์Šค] 4์ฃผ์ฐจ ํšŒ๊ณ  - ์„ฑ์žฅํ•œ ๋‚˜๋ฅผ ๋งŒ๋‚˜๋‹ค! ์ฒซ์ฃผ์ฐจ ํšŒ๊ณ ๋ฅผ ์“ฐ๊ณ  2,3์ฃผ์ฐจ๋Š” ๋ฐ”๋น ์„œ...๋ชป์“ฐ๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰ ์ฃผ์ฐจ ํšŒ๊ณ ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค... ์•„์‰ฌ์›€์ด ๋งŽ์ด ๋‚จ๋Š”๋‹ค. ์ƒ๊ฐ์น˜๋„ ๋ชปํ•œ ์˜ˆ์™ธ์‚ฌํ•ญ์„ ๋ฐœ๊ฒฌํ•ด์„œ, ์ข€ ๋” ๊ผผ๊ผผํžˆ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋“ค์—ฌ๋‹ค ๋ณผ ๊ป„ ํ›„ํšŒ๊ฐ€ ๋œ๋‹ค. ํ•˜๋ฃจ ํšŒ๊ณ ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š๊ณ , ๋งค์ผ 2ํšŒ๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, ๋ฌด์–ธ๊ฐˆ ๊ธฐ๋กํ•˜๋Š” ๊ฑด ์–ด๋ ต๋‹ค... ๊ฐ€๋ณ๊ฒŒ๋ผ๋„ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ๋…ธ๋ ฅํ•˜์ž! ์ฝ”์น˜๋‹˜์˜ ์กฐ์–ธ๋•๋ถ„์— ๋”์šฑ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์„œ ๊ฐ์‚ฌ๋“œ๋ฆฐ๋‹ค. 1์ผ์ฐจ - ์ €๋… ์˜ค๋Š˜ ๋ฏธ์…˜์„ ๋ฐ›๊ณ  ๋‹ค๋ฆฌ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š”๋ฐ ์กฐ๊ธˆ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค. ์ฒ˜์Œ์— 2์ฐจ์› ๋ฐฐ์—ด์•ˆ์— 0,1 ๊ฐ’์„ ์ง‘์–ด ๋„ฃ๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์œ„, ์•„๋ž˜ ๋ชจ๋‘ 0, 0 ์ผ๋• ์–ด๋–กํ•˜์ง€? ํ•˜์ง€ ๊ณ ๋ฏผ๋„ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ 1์ฐจ์› ๋ฐฐ์—ด๋กœ 0,1์„ ์ง‘์–ด๋„ฃ๊ณ  ๊ทธ ๊ฐ’์— ๋”ฐ๋ผ U,D์„ ๋‚˜๋ˆ„๋Š” ..
[์šฐํ…Œ์ฝ” 5๊ธฐ ํ”„๋ฆฌ์ฝ”์Šค] 1์ฃผ์ฐจ ํšŒ๊ณ  - ์†ก์ด์†ก์ด ์• ์†ก์ด ์ด๋ฒˆ ์ฃผ ๋‚ด๋‚ด ํ”„๋ฆฌ์ฝ”์Šค ๋ฏธ์…˜๋งŒ ํ’€์—ˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋œ ๋ฌธ์ œ๋Š” ๊ตฌ๊ตฌ๋‹จ ๋ฌธ์ œ์˜€๋Š”๋ฐ, ์ œ๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ์ ‘๊ทผํ•ด์„œ ์ง€๊ตฌ์˜ ํ•ต๊นŒ์ง€ ๋งŒ๋‚  ์ •๋„๋กœ ์‚ฝ์งˆ์„ ํ–ˆ๋‹ค๋Š” ์ ...โ› ๊ตฌ๊ตฌ๋‹จ ๋ฌธ์ œ๋ฅผ ํ•œ ๋‘ ๋ฒˆ ํ‘ธ๋Š” ๊ฒŒ ์•„๋‹Œ๋ฐ, ๋งค๋ฒˆ ๋Œ€์ถฉ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋”๋‹ˆ, ์—ญ์‹œ ํ”„๋ฆฌ์ฝ”์Šค์—์„œ ํ˜ธ๋˜๊ฒŒ ์ดํ•ดํ–ˆ๋„ค์š”.ใ…Žใ…Ž ๋ฟŒ๋“ฏํ•˜๊ฒŒ ์ œ์ถœํ•˜๊ณ  ๋‚˜์„œ, ๋‹ค๋ฅธ ์ง€์›์ž๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๋ดค๋Š”๋ฐ... ์ €๋Š” ์†ก์ด์†ก์ด ์• ์†ก์ด๋”๋ผ๊ณ ์š”๐Ÿ„ ๋‹ค๋ฅธ ์ง€์›์ž๋ถ„๋“ค์˜ ์ง€์‹์„ ์—ด์‹ฌํžˆ ํก์ˆ˜ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ ์ค‘์ž…๋‹ˆ๋‹ค.๐Ÿ˜ฎ๐Ÿ˜๐Ÿ˜ฎ๐Ÿ˜๐Ÿ˜‹ ๋‹ค์–‘ํ•œ ์ ‘๊ทผ๋ฒ•๊ณผ ๊น”๋”ํ•œ ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ, ์ œ ์ฝ”๋“œ๋Š” ๋งˆ์น˜ ํšก์„ค์ˆ˜์„ค ํˆฌ ๋จธ์น˜ ํ† ์ปค ๊ฐ™์•„์š”. ์ธ๊ฐ„์ ์ธ ๋ฉด๋ชจ์™€ ๋”ฐ๋œปํ•จ์„ ์ง€๋‹Œ ์ œ ์ฝ”๋“œ... ์ˆ˜์š” ์—†๋Š” ๊ณต๊ธ‰์ด๊ฒ ์ฃ ...๐Ÿคฃ ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฆฌ๋ทฐ์™€ ์˜๊ฒฌ์„ ๋ณด๋ฉด์„œ, ์ด๋ฒˆ 2์ฃผ์ฐจ ํ”„๋ฆฌ์ฝ”์Šค ๋ฏธ์…˜์—์„œ๋Š” ..
๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - Context API Context API๋Š” ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๊ฐ€ (์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์ •๋ณด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™˜๊ฒฝ ์„ค์ • ํ…Œ๋งˆ ๋“ฑ) ์žˆ์„๋•Œ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ ๋ฆฌ๋•์Šค, ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ, styled-components ๋“ฑ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Context API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Context API๋ฅผ ์‚ฌ์šฉํ•œ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ํ๋ฆ„ ์ดํ•ดํ•˜๊ธฐ ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ props๋กœ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋Š” ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์ธ App์˜ state์— ๋„ฃ์–ด์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. → ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ๋‚ฎ์•„์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. (์ด์œ  : ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฑฐ์ณ props๋กœ ์›ํ•˜๋Š” ์ƒํƒœ์™€ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ) โ˜…ํ•ด๊ฒฐ : ๋ฆฌ๋•์Šค ๊ฐ™์€ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ์ž‘์—…์„ ๋”..
[๊ตฌ๊ธ€๋ง] ๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - ์™ธ๋ถ€ API๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋‰ด์Šค ๋ทฐ์–ด ๋งŒ๋“ค๊ธฐ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ์ตœ์‹  ๋‰ด์Šค ๋ชฉ๋ก์„ ๋ณด์—ฌ ์ฃผ๋Š” ๋‰ด์Šค ๋ทฐ์–ด ํ”„๋กœ์ ํŠธ ๋น„๋™๊ธฐ ์ž‘์—… ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ์ฒ˜๋ฆฌํ•  ๋•Œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ์žˆ๋‹ค. ์˜ˆ) ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์„œ๋ฒ„ ์ชฝ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ Ajax ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์˜ API๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„œ๋ฒ„์˜ API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ๋Š” ๋„คํŠธ์›Œํฌ ์†ก์ˆ˜์‹  ๊ณผ์ •์—์„œ ์‹œ๊ฐ„ ์†Œ์š”, ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ „๋‹ฌ๋ฐ›์€ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. โ–ถ ์ด ๊ณผ์ •์—์„œ ํ•ด๋‹น ์ž‘์—…์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.(๋™์‹œ์— ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ, ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ณผ์ •์—์„œ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋„ ํ˜ธ์ถœ) ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ Ajax ๊ธฐ๋ฒ•(Asynchronous JavaScript and XML) axios : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ HTTP ํด๋ผ์ด์–ธํŠธ ์›น ํ†ต์‹  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ htt..
๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋กœ SPA ๊ฐœ๋ฐœํ•˜๊ธฐ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ผ์šฐํŒ…์ด๋ž€? ๋ผ์šฐํŒ… : ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL์— ๋”ฐ๋ผ ์•Œ๋งž์€ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ, ํŽ˜์ด์ง€ ๋ณ„๋กœ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ถ„๋ฆฌํ•ด๊ฐ€๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ, Next.js ๋ฆฌ์—‘ํŠธ์—์„œ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ : ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - Next.js : ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์˜ ํ”„๋ ˆ์ž„์›Œํฌ, ์ด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์€ ํŒŒ์ผ ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ ๋ผ์šฐํŒ… ๊ด€๋ จ ๊ธฐ๋Šฅ์€ ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์„œ๋“œ ํŒŒํ‹ฐ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. * ์„œ๋“œ ํŒŒํ‹ฐ๋ž€? ํŽธํ•˜๊ณ  ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด, ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์ œ์ž‘์‚ฌ..
๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - ์ปดํฌ๋„ŒํŠธ ์„ฑ๋Šฅ ์ตœ์ ํ™” React DevTools๋ฅผ ํ™œ์šฉํ•ด ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋ฆฌ๋ Œ๋”๋ง์ด ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ 1. ์ž์‹ ์ด ์ „๋‹ฌ๋ฐ›์€ props๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ 2. ์ž์‹ ์˜ state๊ฐ€ ๋ฐ”๋€” ๋•Œ 3. ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋งํ•  ๋•Œ 4. forceUpdate ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ -> ๋ฆฌ๋ Œ๋”๋ง์ด ๋ถˆํ•„์š”ํ•  ๋•Œ๋Š” ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. 1. React.memo : ์ด์ „๊ณผ ๊ฐ™์€ props๊ฐ€ ๋“ค์–ด์˜ฌ๋•Œ, ๋ Œ๋”๋ง ๊ณผ์ •์„ ์Šคํ‚ต, ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ Œ๋”๋ง๋œ ๊ฒฐ๊ณผ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” (== React.memo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค.) ๋ผ์ดํ”„์‚ฌ์ดํด ์ค‘ 'shouldComponentUpdate'๋Š” ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ โ†—์ด๋Š” ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ๋Œ€์‹  Reac..
10/11์ผ ์˜ค๋Š˜ ๊ตฌ๊ธ€๋ง ํ•œ ๋‚ด์šฉ (Prettier Option, CSS) Prettier : ์ฝ”๋“œ ์Šคํƒ€์ผ ์ž๋™ ์ •๋ฆฌ ๋„๊ตฌ ์ž๋™ ์ •๋ ฌ, ์ž๋™ ์„ธ๋ฏธ์ฝœ๋ก  ์ถ”๊ฐ€, ํฐ๋”ฐ์˜ดํ‘œ๋กœ ํ†ต์ผ ๋“ฑ๋“ฑ ์ด๋Ÿฌํ•œ ์Šคํƒ€์ผ์„ ์‰ฝ๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ๋‹ค. - "trailingComma" : ํ•ญ๋ชฉ์˜ ๋‚˜์—ด์—์„œ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์—๋„ ์ฝค๋งˆ๋ฅผ ๋ถ™์ด๋Š” ์ฝ”๋”ฉ๋ฐฉ์‹ - "printWidth" : ์ค„ ๋ฐ”๊ฟˆ ํ•  ํญ ๊ธธ์ด ์ฐธ๊ณ  - https://velog.io/@kyusung/eslint-prettier-config em, rem์€ ๋ฌด์—‡์ธ๊ฐ€? em๋‹จ์œ„๋Š” ์ƒ๋Œ€ ๊ธธ์ด ๋‹จ์œ„๋กœ ์š”์†Œ์˜ ๊ธ€๊ผด ํฌ๊ธฐ์™€ ๊ด€๋ จ๋˜์–ด์žˆ๋‹ค. ์ง€์ •๋œ ์š”์†Œ์˜ font-size์˜ ๋ฐฐ์ˆ˜ rem๋‹จ์œ„๋Š” root em์ด๋ผ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ตœ์ƒ์œ„ ์š”์†Œ์˜ font-size์— ๋Œ€ํ•œ em๋‹จ์œ„ ์ด๋‹ค. ์ฐธ๊ณ  - https://velog.io/@ursr0706/em%EB%8B%A8%EC%9C%84..
๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - Hooks 1. useState 2. useEffect 3. useReducer 4. useMemo 5. useCallBack 6. useRef 7. ์ปค์Šคํ…€ Hooks useEffect VS useCallBack VS useMemo useEffect useCallBack useMemo ํŠน์ •๊ฐ’(๋ฐฐ์—ด ์•ˆ ๊ฐ’)์ด ์—…๋ฐ์ดํŠธ ๋ ๋•Œ, ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค์ • ์ƒˆ๋กœ์šด ํ•จ์ˆ˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์‹คํ–‰๋˜๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๋ จ ํŠน์ •๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋  ๋•Œ, ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑ, ํ•จ์ˆ˜ memoizationํ•˜์—ฌ, ๊ฐ™์€ ํ•จ์ˆ˜ ์ธ์Šคํ„ด์Šค ์žฌ์‚ฌ์šฉ โ€ป ๋นˆ ๋ฐฐ์—ด, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ๋•Œ ๋งŒ๋“ค์—ˆ๋˜ ํ•จ์ˆ˜๋ฅผ ๊ณ„์†ํ•ด์„œ ์žฌ์‚ฌ์šฉ ํŠน์ •๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋  ๋•Œ, ์—ฐ์‚ฐ์„ ์‹คํ–‰(o) ์ƒˆ๋กœ ์ƒ์„ฑ(x) ๊ฐ’์„ memoizationํ•˜์—ฌ, ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋‚˜ ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉ ์›ํ•˜..
๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - ์ปดํฌ๋„ŒํŠธ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋“ค์€ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ DOM์„ ์ง์ ‘ ๊ฑด๋“œ๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ• ๋•Œ๋Š” shouldComponentUpdate๊ฐ€ ์ค‘์š”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฉ”์„œ๋“œ๋Š” 9์ข…๋ฅ˜ Will ์ ‘๋‘์‚ฌ๋Š” ์–ด๋–ค ์ž‘์—…์„ ์ž‘๋™ํ•˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ / Did ์ ‘๋‘์‚ฌ๋Š” ์–ด๋–ค ์ž‘์—…์„ ์ž‘๋™ํ•œ ํ›„ ์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ ์ด ๋ฉ”์„œ๋“œ๋“ค์€ ์šฐ๋ฆฌ๊ฐ€ ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค์—์„œ ๋ฎ์–ด ์จ ์„ ์–ธํ•จ์œผ๋กœ์จ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Mount : Dom์ด ์ƒ์„ฑ๋˜๊ณ  ์›น ๋ธŒ๋ผ์šฐ์ €์ƒ์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ constructor : ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” ํด๋ž˜์Šค ์ƒ์„ฑ์ž ๋ฉ”์„œ๋“œ ↓ getDerivedStateFromProps : ..
๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  - ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง, ref:DOM์— ์ด๋ฆ„๋‹ฌ๊ธฐ, ์ปดํฌ๋„ŒํŠธ ๋ฐ˜๋ณต ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง - const ํ‚ค์›Œ๋“œ + ํ•จ์ˆ˜ํ˜•ํƒœ๋กœ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค. - ์š”์†Œ ์ ์šฉ์„ ์œ„ํ•œ this๊ฐ€ ํ•„์š”์—†๋‹ค. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง - ํ•จ์ˆ˜ ์„ ์–ธ์‹œ ์—๋กœ์šฐ ํ™”์‚ด๋กœ ๋ฐ”๋กœ ์„ ์–ธ ๊ฐ€๋Šฅ - ์š”์†Œ ์ ์šฉ์„ ์œ„ํ•œ this ํ•„์š” import { useState } from "react"; const EventPractice_func = () => { const [form, setForm] = useState({ user_name: "", user_age: "", }); const { user_name, user_age } = form; const onChangeForm = (e) => { const nextForm = { ...form, // ๊ธฐ์กด์˜ form ๋‚ด์šฉ์„ ์ด์ž๋ฆฌ์—..
React์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” javascript ๋ฌธ๋ฒ• 1. Object shorthand assignment let name="noona" let age=172 let person={ name:name, age:age } // => ํ‚ค์™€ ํ‚ค๊ฐ’์— ๋“ค์–ด๊ฐ€๋Š” ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋™์ผํ•˜๋‹ค๋ฉด, ์•„๋ž˜ ์ฝ”๋“œ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. let person1={ name, age } 2. Destructuring let person={ name:"noona", age:20 } //let name2=person2.name //let age2=person['age'] // ์œ„์˜ ์ฝ”๋“œ์™€ ๋™์ผํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. let { name, age } = person // let{ name } = person ๋„ ๊ฐ€๋Šฅ. console.log(name,age) // nonna, 20 // ๋ฐฐ์—ด์—์„œ๋„ ์‚ฌ์šฉ..
[JS] ํด๋ฆฐ์ฝ”๋“œ - ๊ฒฝ๊ณ„ ๋‹ค๋ฃจ๊ธฐ (min~max, first~last, prefix-suffix) ๊ฒฝ๊ณ„๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ์˜ํ•ด์•ผ ํ•  ์ ! 1. ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์˜ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค (๋ฏธ๋งŒ - ์ดํ•˜ / ์ดˆ๊ณผ - ์ด์ƒ) 2. ๋ณ€์ˆ˜ ๋„ค์ด๋ฐ์— ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. ( MIN_NUMBER_LIMIT - ๋ฏธ๋งŒ , MIN_IN_NUMBER - ์ดํ•˜) 3. ํ•จ์ˆ˜์˜ ์ธ์ž๊ฐ’์—์„œ ์ด๋ฅผ ์ž˜ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. (ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์˜ ๋„ค์ด๋ฐ๊ณผ ์ธ์ž์˜ ์ˆœ์„œ์˜ ์—ฐ๊ด€์„ฑ์„ ๊ณ ๋ ค) - 1. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ๊ฐ€ ๋„˜์ง€ ์•Š๋„๋ก - 2. arguments, rest parameter๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ 3. ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ์ฒด์— ๋‹ด์•„์„œ ๋„˜๊ธด๋‹ค. 4. ์ด๋ฏธ ๋งŒ๋“  ํ•จ์ˆ˜๋ฅผ ๋žฉํ•‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค. min - max : ์—ฐ์†์„ฑ, ๊ทœ์น™์„ฑ์ด ์žˆ๋‹ค. ex ) min=1, max=5 -> [1 , 2 , 3 , 4 , 5 ] function ..
[JS] ํด๋ฆฐ์ฝ”๋“œ - eqeq ์ค„์ด๊ธฐ, ํ˜•๋ณ€ํ™˜ ์ฃผ์˜ํ•˜๊ธฐ, isNaN eqeq๋ž€? JS์—์„œ์˜ ๋™๋“ฑ ์—ฐ์‚ฐ์ž! '==' ๊ทธ๋ ‡๋‹ด eqeqeq๋Š” ? '===' //๋™๋“ฑ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•”๋ฌต์ ์ธ ํ˜•๋ณ€ํ™˜(type casting)์ด ์ผ์–ด๋‚จ '1' == 1 // true 1 == true // true '1' === 1 // false 1 === true // false // ์•”๋ฌต์ ์ธ ํ˜•๋ณ€ํ™˜ ์˜ˆ์‹œ 11 + '๋ฌธ์ž' // '11๋ฌธ์ž' !!'๋ฌธ์ž์—ด' // true !!'' // false //๋ช…์‹œ์  ๋ณ€ํ™˜ - ์•ˆ์ „ํ•˜๊ฒŒ ํ˜•๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. String(11 + '๋ฌธ์ž') // '11๋ฌธ์ž' Boolean(!!'๋ฌธ์ž์—ด') // true Boolean(!!'') // false parseInt('9.999',10) // 9 // parseInt์˜ ๊ฒฝ์šฐ, ๋‘๋ฒˆ์งธ ๊ผญ ์ธ์ž๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’..
[JS] ํด๋ฆฐ์ฝ”๋“œ (undefined, null) ๊ฐœ๋…, ์ฐจ์ด์  undefined , null => ๊ฐ’์ด ์—†๊ฑฐ๋‚˜ ์ •์˜๋˜์ง€ ์•Š์€๊ฒƒ(์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ) undefined -> NaN null -> 0 type undefined type Object !null // true !undefined // true !!null //false null === false // false !null === true // true undefined == null // true undefined === null // false !undefined === !null // true //undefined : ์„ ์–ธํ–ˆ์ง€๋งŒ ๊ฐ’์€ ์ •์˜๋˜์ง€ ์•Š๊ณ  ํ• ๋‹น๋˜์ง€์•Š์Œ. let a; let b=null; typeof a // undefined typeof b // object //null์€ ์ˆซ์ž์ ..

728x90