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

ALL

(119)
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 2์ผ์ฐจ [2์ผ์ฐจ ๊ฐ•์˜๋ช…] Part 1. HTML/CSS/JS๋กœ ๋งŒ๋“œ๋Š” ์Šคํƒ€๋ฒ…์Šค ์›น์‚ฌ์ดํŠธ Ch 3. ๋ฌด์ž‘์ • ์‹œ์ž‘ํ•˜๊ธฐ Ch 4. ์›น์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ Ch 3. ๋ฌด์ž‘์ • ์‹œ์ž‘ํ•˜๊ธฐ ์ฃผ์š” ๋‚ด์šฉ HTML Doctype ๋œฏ์–ด๋ณด๊ธฐ ์ƒ๋Œ€ ๊ฒฝ๋กœ์™€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์  html ํŒŒ์ผ์€ ๋”ฐ๋กœ ํด๋” ์•ˆ์—์„œ ๊ด€๋ฆฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค. => ๋ธŒ๋ผ์šฐ์ €๋Š” root ๊ฒฝ๋กœ์— ์žˆ๋Š” index๋ผ๋Š” html ํŒŒ์ผ์„ ๊ฐ€์žฅ ๋จผ์ € ์ฐพ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํŒŒ์ผ ์—ฐ๊ฒฐํ•  ๋•Œ ์ฃผ๋ณ€ ํŒŒ์ผ or ํด๋”๋ฉด /(๋ฃจํŠธ ๊ธฐ์ค€ - ์ ˆ๋Œ€ ๊ฒฝ๋กœ)
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 1์ผ์ฐจ [1์ผ์ฐจ ๊ฐ•์˜๋ช…] Part 1. HTML/CSS/JS๋กœ ๋งŒ๋“œ๋Š” ์Šคํƒ€๋ฒ…์Šค ์›น์‚ฌ์ดํŠธ Ch 1. ๊ฐœ์š” Ch 2. VS Code ํŒจ์บ  ๊ฐ•์˜ ๋“ฃ๋Š” ์ด์œ  ์ผ๋‹จ ํŒจ์บ ์„ ์•Œ๊ฒŒ ๋œ ๊ฒฝ๋กœ๋Š” [๋ฒจ๋กœํผํŠธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ชจ๋˜ ๋ฆฌ์•กํŠธ] ๋ผ๋Š” ๋ธ”๋กœ๊ทธ ํŠœํ† ๋ฆฌ์–ผ(?)์„ ์•„๋Š” ๋ถ„์ด ์ถ”์ฒœํ•ด์ค˜์„œ ์ด๊ฑธ๋กœ ๋ฆฌ์•กํŠธ๋ฅผ ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ ๊ฐœ์ธ์ ์œผ๋กœ ๊ต‰์žฅํžˆ ๋ง˜์— ๋“ค์—ˆ์—ˆ๋‹ค. ๊ทผ๋ฐ ๋‚ด๊ฐ€ ๋ณธ ์ด ํŠœํ† ๋ฆฌ์–ผ์ด ใ…ใ…‹ ๋ฆฌ์•กํŠธ ๊ฐ•์˜ ์ž๋ฃŒ ๋ฌธ์„œ์˜€๋˜ ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ใ…ใ…‹ ๋ญ ์œ ๋ช…ํ•˜๋‹ˆ๊นŒ ์•Œ๊ณ ๋Š” ์žˆ์—ˆ๋‹ค! ๋ฐฉํ•™๋„ ํ–ˆ๊ฒ ๋‹ค ๋ญํ• ๊นŒ ๊ตฌ๊ฒฝํ•˜๋‹ค๊ฐ€ ํŒจ์บ  ํ™ˆํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๋ดค๋Š”๋ฐ ๊ฐ•์˜๊ฐ€ ๋˜๊ฒŒ ๋‹ค์–‘ํ•ด์„œ ๋ช‡ ๋ถ„ ๋™์•ˆ ๊ตฌ๊ฒฝํ–ˆ๋˜๊ฑฐ ๊ฐ™๋‹ค ๐Ÿค“ ๊ทผ๋ฐ ์ด ํ”„๋ก ํŠธ์—”๋“œ ์ดˆ๊ฒฉ์ž ํŒจํ‚ค์ง€๊ฐ€ html๋ถ€ํ„ฐ react, ts ๋“ฑ๋“ฑ... ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฝ”์Šค๊ฐ€ ์งœ์ ธ ์žˆ๊ณ  ts๋„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์—ˆ๋˜ ์ฐธ์ด๊ธฐ์— ๊ฐ•์˜๋ฅผ ๋“ค์–ด๋ณด..
React ๊ณต๋ถ€ํ•˜๊ธฐ(8) - ์ƒํƒœ ๊ด€๋ฆฌ, Context API of ๋ฆฌ์•กํŠธ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ 3. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฆฌ์•กํŠธ ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ธฐ ์นด์šดํ„ฐ ๋งŒ๋“ค์–ด๋ณด๊ธฐ ์ธํ’‹ ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ธฐ useReducer ์‚ฌ์šฉํ•ด๋ณด๊ธฐ import React, { useReducer } from 'react'; type Color = 'red' | 'orange' | 'yellow'; type State = { count: number; text: string; color: Color; isGood: boolean; }; type Action = | { type: 'SET_COUNT'; count: number } | { type: 'SET_TEXT'; text: string } | { type: 'SET_COLOR'; color: Color } | { type: 'TOGGLE_GOOD' }; function reducer(st..
React ๊ณต๋ถ€ํ•˜๊ธฐ(8) - ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉํ•˜๊ธฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  1. IDE(Integrated Development Environment)๋ฅผ ๋”์šฑ ๋” ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉ (์ž๋™์™„์„ฑ, ํƒ€์ž…ํ™•์ธ) 2. ์‹ค์ˆ˜ ๋ฐฉ์ง€ 1. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์—ฐ์Šต $ mkdir ts-practice # ts-practice ๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ $ cd ts-practice # ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ $ yarn init -y # ๋˜๋Š” npm init -y ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ts-practice ๋””๋ ‰ํ„ฐ๋ฆฌ์— package.json ์ด๋ผ๋Š” ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์„ค์ •ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ $ yarn global add typescript ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—์„œ tsc --init ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด tsconfig.json ํŒŒ์ผ์ด ์ž๋™์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. { "compilerOpti..
React ๊ณต๋ถ€ํ•˜๊ธฐ(7) - redux-saga of ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด 10. redux-saga : "์•ก์…˜์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€, ํŠน์ • ์•ก์…˜์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด์— ๋”ฐ๋ผ ํŠน์ • ์ž‘์—…์„ ํ•œ๋‹ค." ์˜ˆ๋ฅผ ๋“ค์–ด,,, ๋น„๋™๊ธฐ ์ž‘์—…์„ ํ•  ๋•Œ ๊ธฐ์กด ์š”์ฒญ์„ ์ทจ์†Œ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ํŠน์ • ์•ก์…˜์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์•ก์…˜์ด ๋””์ŠคํŒจ์น˜๋˜๊ฒŒ๋” ํ•˜๊ฑฐ๋‚˜, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Channel ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ฐธ๊ณ ) API ์š”์ฒญ์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ์žฌ์š”์ฒญํ•˜๋Š” ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Generator ๋ฌธ๋ฒ• ๋ฐฐ์šฐ๊ธฐ => ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ํ•จ์ˆ˜๋ฅผ ํŠน์ • ๊ตฌ๊ฐ„์— ๋ฉˆ์ถฐ ๋†“์„ ์ˆ˜๋„ ์žˆ๊ณ , ์›ํ•  ๋•Œ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. => ๊ฒฐ๊ณผ๊ฐ’์„ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. function* sumGenerator() { co..
React ๊ณต๋ถ€ํ•˜๊ธฐ(7) - redux-thunk of ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด 4. redux-thunk : "์•ก์…˜ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜๋ฅผ ๋””์ŠคํŒจ์น˜ ํ•  ์ˆ˜ ์žˆ๋‹ค." => ํ•จ์ˆ˜๋ฅผ ๋””์ŠคํŒจ์น˜ ํ•  ๋•Œ์—๋Š”, ํ•ด๋‹น ํ•จ์ˆ˜์—์„œ dispatch์™€ getState๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์™€์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ thunk๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. const getComments = () => (dispatch, getState) => { // ์ด ์•ˆ์—์„œ๋Š” ์•ก์…˜์„ dispatch ํ•  ์ˆ˜๋„ ์žˆ๊ณ  // getState๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์ƒํƒœ๋„ ์กฐํšŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. const id = getState().post.activeId; // ์š”์ฒญ์ด ์‹œ์ž‘ํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ์•ก์…˜ dispatch({ type: 'GET_COMMENTS' }); // ๋Œ“๊ธ€์„ ์กฐํšŒํ•˜๋Š” ํ”„๋กœ๋ฏธ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” getComments ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…..
React ๊ณต๋ถ€ํ•˜๊ธฐ(7) - ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด ๋ณดํ†ต ๋ฆฌ๋•์Šค์—์„œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ๋œ ์‚ฌ์šฉ ์šฉ๋„๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ์ด๋‹ค. (redux-thunk, redux-sage ๋“ฑ) $ yarn add redux react-redux 2. ๋ฏธ๋“ค์›จ์–ด ๋งŒ๋“ค์–ด๋ณด๊ณ  ์ดํ•ดํ•˜๊ธฐ ๋ฆฌ๋•์Šค ๋ฏธ๋“ค์›จ์–ด์˜ ํ…œํ”Œ๋ฆฟ const middleware = store => next => action => { // ํ•˜๊ณ  ์‹ถ์€ ์ž‘์—…... } function middleware(store) { return function (next) { return function (action) { // ํ•˜๊ณ  ์‹ถ์€ ์ž‘์—…... }; }; }; store: ๋ฆฌ๋•์Šค ์Šคํ† ์–ด next: ์•ก์…˜์„ ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ํ•จ์ˆ˜ next(action) action: ํ˜„์žฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์•ก์…˜ ๊ฐ์ฒด ๋ฏธ๋“ค์›จ์–ด ์ง์ ‘ ์ž‘์„ฑ..
React ๊ณต๋ถ€ํ•˜๊ธฐ(6) - ๋ฆฌ๋•์Šค(Redux) ๐Ÿ”ง ๋ฆฌ๋•์Šค ๊ฐœ๋ฐœ์ž๋„๊ตฌ ์ ์šฉํ•˜๊ธฐ https://react.vlpt.us/redux/06-redux-devtools.html 6. ๋ฆฌ๋•์Šค ๊ฐœ๋ฐœ์ž๋„๊ตฌ ์ ์šฉํ•˜๊ธฐ · GitBook 6. ๋ฆฌ๋•์Šค ๊ฐœ๋ฐœ์ž๋„๊ตฌ ์ ์šฉํ•˜๊ธฐ ์ด๋ฒˆ์—๋Š” ๋ฆฌ๋•์Šค ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋•์Šค ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์Šคํ† ์–ด์˜ ์ƒํƒœ๋ฅผ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ์กฐํšŒ ํ•  ์ˆ˜ ์žˆ react.vlpt.us 3. ๋ฆฌ๋•์Šค ์‚ฌ์šฉํ•  ์ค€๋น„ํ•˜๊ธฐ import { createStore } from 'redux'; // ์Šคํ† ์–ด ์ƒ์„ฑ import { createStore } from 'redux'; // createStore๋Š” ์Šคํ† ์–ด๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. // ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์Šคํ† ์–ด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. /* ๋ฆฌ๋•์Šค์—์„œ ๊ด€๋ฆฌ ํ•  ์ƒํƒœ ์ •..