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

ALL

(119)
React ๊ณต๋ถ€ํ•˜๊ธฐ(1) - ์ƒํƒœ๊ด€๋ฆฌํŽธ ๐Ÿ‡ ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ์•„๋ž˜์— ๊ธฐ๋Šฅ๋“ค์€ ๋ชจ๋‘ React Hooks์ค‘ ํ•˜๋‚˜ on์ด๋ฒคํŠธ์ด๋ฆ„={์‹คํ–‰ํ•˜๊ณ ์‹ถ์€ํ•จ์ˆ˜} 7. useState๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ”๋€Œ๋Š” ๊ฐ’ ๊ด€๋ฆฌํ•˜๊ธฐ import React, { useState } from 'react'; function Counter() { const [number, setNumber] = useState(0); const onIncrease = () => { setNumber(number + 1); } const onDecrease = () => { setNumber(number - 1); } return ( {number} +1 -1 ); } export default Counter; (์ž์„ธํžˆ ๋ณด๊ธฐ) ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ๋ Œ๋”๋ง๋˜๋Š” ์‹œ์ ์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฒ„๋ฆผ..
React ๊ณต๋ถ€ํ•˜๊ธฐ(1) - ๊ธฐ๋ณธํŽธ ๐ŸŒˆ ๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ 01. ๋ฆฌ์•กํŠธ๋Š” ์–ด์ฉŒ๋‹ค ๋งŒ๋“ค์–ด์กŒ์„๊นŒ? Javascript๋Š” ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด, ๊ทธ ์ƒํƒœ์™€ ์—ฐ๊ฒฐ๋œ(getElementById) DOM์„ ๋ณ€๊ฒฝ! React๋Š” ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด, ์•„์˜ˆ ์ „๋ถ€ ๋‹ค ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด DOM์„ ๋ณด์—ฌ์คŒ! => ์–ด๋–ป๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ๋˜์ง€.. ๊ณ ๋ฏผํ•  ํ•„์š” ์—†์–ด์ง ๊ฐœ๋ฐœ์ด ์‰ฌ์–ด์กŒ๋‹ค => ๊ทผ๋ฐ ๋Š๋ฆฌ์ง€ ์•Š์•„? => virtual DOM์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€๊ฒฝ์ด ๋œ ๋ถ€๋ถ„๊ณผ ์•ˆ ๋œ ๋ถ€๋ถ„์„ ๋น„๊ตํ•ด์„œ ๋ณ€๊ฒฝ๋œ ๊ฒƒ๋งŒ ์‹ค์ œ DOM์— ์ ์šฉ => ๊ทธ๋ž˜์„œ ๊ฒฐ๋ก ์€ ๋น ๋ฅด๋‹ค! 02. ์ž‘์—…ํ™˜๊ฒฝ ์ค€๋น„ Node.js : for Webpack, Babel Yarn : npm(node.js package manager) ์ƒ์œ„๋ฒ„์ „ ์ฝ”๋“œ ์—๋””ํ„ฐ : VSC Git bash Webpack : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŒŒ..
[JavaScript] HTML์— JS ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• ๋น„๊ต / async VS defer ์ฐจ์ด์  ๐Ÿ”ฝ HTML ํŒŒ์‹ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š” ๐Ÿ”ฝ[HTTP] ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •๐Ÿ”— Browser Rendering(๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง)์ด๋ž€? ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค. ๐Ÿ”— Parsing(ํŒŒ์‹ฑ)์ด๋ž€? ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” devjindev.tistory.com 1. head ์•ˆ์— ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ โญโ˜†โ˜†โ˜† 123456789 ... ... cs JS๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์•ˆ HTML ํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๊ณ , JS ๋‹ค ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋‚˜๋จธ์ง€ ํŒŒ์‹ฑ์„ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์—ฌ์ง€๋Š” ์‹œ๊ฐ„์ด ๋”œ๋ ˆ์ด๋œ๋‹ค. 2. body ์•ˆ(๋งจ ๋)์— ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ โญโญโ˜†โ˜† 123456789 ... ... cs ๋จผ์ € HTML์„ ๋ชจ๋‘ ํŒŒ์‹ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜์ด์ง€๊ฐ€ ๋ณด์—ฌ์ง„ ํ›„,..
[JavaScript] ํ”„๋กœํ† ํƒ€์ž…(prototype) ์ด๋ž€ ํด๋ž˜์Šค(class)๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์—์„œ ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋„ ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์ด๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ํด๋ž˜์Šค๊ฐ€ ์—†๋‹ค. ๋Œ€์‹  ํ”„๋กœํ† ํƒ€์ž…์ด๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค. ์ด๊ฒƒ์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ 'ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ์–ธ์–ด'๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ด์œ ์ด๋‹ค. ๐Ÿ”— ํ”„๋กœํ† ํƒ€์ž…(prototype) ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ํด๋ž˜์Šค ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์†์„ ๊ตฌํ˜„ํ•˜์—ฌ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ฐ™์€ ํ˜ธ์ถœ์„ ๋ฐ˜๋ณตํ•œ๋‹ค๋˜๊ฐ€์˜ ๋ถˆํ•„์š”ํ•œ ํ–‰๋™์ด ๋ฐ˜๋ณต๋˜์–ด ํšจ์œจ์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋˜์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœํ† ํƒ€์ž…์ด๋ผ๋Š” ๋นˆ ๊ฐ์ฒด์— ๋ฏธ๋ฆฌ ๊ฐ’๋“ค์„ ๋‹ด์•„๋‘๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋Š” ๊ทธ ํ”„๋กœํ† ํƒ€์ž…์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์„ ๊ฐ–์ถฐ์„œ ํด๋ž˜์Šค์˜ ํ™œ์šฉ์ฒ˜๋Ÿผ ์žฌ์‚ฌ์šฉ์„ ..
[JavaScript] Axios ์‚ฌ์šฉํ•˜์—ฌ ์›น์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ๐Ÿ”ฝ AJAX, HTTP์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š” ๐Ÿ”ฝ [JavaScript / ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ] AJAX / Callback, Promise, async, await ๐Ÿ“Œ ๋™๊ธฐ(Synchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ vs ๋น„๋™๊ธฐ(Asynchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ž‘์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฝ”๋“œ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ devjindev.tistory.com [HTTP] API๋ž€? REST(RESTful) API๋ž€? ๐Ÿ”— API(Application Programing Interface)๋ž€? ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก, ์šด์˜ ์ฒด์ œ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๐Ÿ”— REST(RESTful) A..
[JavaScript] AJAX / XMLHttpRequest, axios, fecth ๐Ÿ”— AJAX๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹ ์ด๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ„์˜ XML ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ์ˆ ์ด๋‹ค. XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋ฆฌ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. [JavaScript / ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ] AJAX / Callback, Promise, async, await ๐Ÿ“Œ ๋™๊ธฐ(Synchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ vs ๋น„๋™๊ธฐ(Asynchronous) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ž‘์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฝ”๋“œ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ devjindev.tistory.com ๐Ÿ”— XMLHttpRequest AJAX๋Š” ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ๋ชจ๋‘ XMLHttpReques..
[JavaScript] this๋ž€? / call, apply, bind ์ฐจ์ด์  ๐Ÿ”— this๋ž€? this๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์— ๋”ฐ๋ผ this์— ๋ฐ”์ธ๋”ฉํ•  ๊ฐ์ฒด๊ฐ€ ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค. (์˜ˆ์™ธ์ ์œผ๋กœ, bind ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๊ณผ ๋ฌด๊ด€์—๊ฒŒ ๋ฌถ์–ด์„œ ๊ณ ์ •์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.) ํ˜ธ์ถœํ•œ ๊ฐ์ฒด === this ๐Ÿ”— ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹ 1. ํ•จ์ˆ˜(์ผ๋ฐ˜ํ•จ์ˆ˜, ์ „์—ญํ•จ์ˆ˜, ์™ธ๋ถ€ํ•จ์ˆ˜, ๋‚ด๋ถ€ํ•จ์ˆ˜(์ผ๋ฐ˜ ๋‚ด๋ถ€ํ•จ์ˆ˜, ๋ฉ”์†Œ๋“œ์˜ ๋‚ด๋ถ€ํ•จ์ˆ˜, ์ฝœ๋ฐฑํ•จ์ˆ˜ ๋“ฑ)) ํ˜ธ์ถœ this๋Š” ์ „์—ญ๊ฐ์ฒด(window)๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 2. ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ this๋Š” ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 3. ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ํ˜ธ์ถœ this๋Š” ์ƒ์„ฑ์ž๋กœ ์ธํ•ด ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 4. call, apply, bind ํ˜ธ์ถœ this๊ฐ€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹์— ๋”ฐ๋ผ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋ฉด call, apply, bind๋Š” ํ•จ์ˆ˜๊ฐ€ ์ง์ ‘ ์‹คํ–‰๋ฌธ๋งฅ์„ ๊ฒฐ์ •ํ•œ๋‹ค. call์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์‹คํ–‰ํ•œ๋‹ค. ํ•จ์ˆ˜..
[JavaScript] ํด๋กœ์ €(Closure)๋ž€? ๐Ÿ”— ํด๋กœ์ €(Closure)๋ž€? ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ์˜ํ•ด ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์‹คํ–‰๊ตฌ๋ฌธ์„ ๋ชจ๋‘ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋งŒ๋“  ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ๋ผ์ง€์ง€๋งŒ, ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๋‚จ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ํด๋กœ์ €๋ผ๊ณ  ํ•œ๋‹ค. ํด๋กœ์ €๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ค‘์ฒฉ ํ•จ์ˆ˜์™€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ๋ฐ, ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ํด๋กœ์ € ํ•จ์ˆ˜๊ฐ€ ๋™์ž‘ํ•œ๋‹ค. 1 2 3 4 5 6 7 8 9 10 11 12 13 // ํ•จ์ˆ˜ ์„ ์–ธ function createCount(){ var count = 0; // ๋ณ€์ˆ˜ ์„ ์–ธ // 3 โ˜…๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ๋‚จ์Œ ๐ŸงŸ‍โ™€๏ธโ˜… // ์ค‘์ฒฉ ํ•จ์ˆ˜ // 4 ๋‹ค์‹œ ์‚ด์•„๋‚จ function addCount(){ count++; // ์ฒ˜๋ฆฌ return..