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

React

(14)
[ React / Redux ] Redux ์ƒํƒœ ๊ด€๋ฆฌ ๊ฐœ๋…์ •๋ฆฌ. ๊ธฐ์กด์— ๋‚ด๊ฐ€ React ํ”„๋กœ์ ํŠธ์— ์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” recoil ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ํšŒ์‚ฌ์—์„œ๋Š” Mobx์™€ Redux๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ Redux ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋ณด๋ฉฐ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. Redux ๊ธฐ๋ณธ ๊ฐœ๋… Redux๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ฑ์„ ์œ„ํ•œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ƒํƒœ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•œ๋‹ค. ์ผ๊ด€์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ์„œ๋กœ ๋‹ค๋ฅธ ํ™˜๊ฒฝ (์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ, ๋„ค์ดํ‹ฐ๋ธŒ)์—์„œ ์ž‘๋™ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์‰ฌ์šด ์•ฑ์„ ๋งŒ๋“ค๋„๋ก ๋„์™€์ฃผ๋ฉฐ Redux๋Š” React๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋งค์šฐ ์ž‘์€ ์šฉ๋ž‘(์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌํ•จ 2KB)์œผ๋กœ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Redux๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ SPA์—์„œ ๊ฐ–์ถ”์–ด์•ผ ํ•  ์š”๊ฑด๋“ค์ด ์ ์  ๋ณต์žกํ•ด์ง์— ๋”ฐ๋ผ ๋งŽ์€..
[ NEXT.JS ] Next.js์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ. NEXT.JS๋Š” ๋ฌด์—‡์ผ๊นŒ? Next.js ๋Š” ๋น ๋ฅธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋นŒ๋”ฉ ๋ธ”๋ก์„ ์ œ๊ณตํ•˜๋Š” React ํ”„๋ ˆ์ž„ ์›Œํฌ๋กœ, React์— ํ•„์š”ํ•œ ๋„๊ตฌ ๋ฐ ๊ตฌ์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ตฌ์กฐ, ๊ธฐ๋Šฅ ๋ฐ ์ตœ์ ํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Next.js๋Š” SSR(Server-Side-Rendering), ์ •์  ์›น ํŽ˜์ด์ง€ ์ƒ์„ฑ ๋“ฑ React ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ๋“ค์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” Node.js ์œ„์—์„œ ๋นŒ๋“œ๋œ ์˜คํ”ˆ ์†Œ์Šค ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. React๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI๋ฅผ ๊ตฌ์ถ•ํ•œ ๋‹ค์Œ, Next.js ๊ธฐ๋Šฅ์„ ์ ์ง„์ ์œผ๋กœ ์ฑ„ํƒํ•˜์—ฌ ๋ผ์šฐํŒ…, ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ, ํ†ตํ•ฉ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋™์‹œ์— ๊ฐœ๋ฐœ์ž ๋ฐ ์ตœ์ข… ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. React์˜ ๊ณต์‹ ํŽ˜์ด์ง€์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์†Œ๊ฐœํ•œ๋‹ค..
[ React / Recoil ] React์˜ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Recoil์˜ effects ์‚ฌ์šฉํ•˜๊ธฐ. ๋‚˜๋Š” ๋ณดํ†ต react ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ„๋‹จํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๋“ค์€ ๋Œ€๋ถ€๋ถ„ recoil์„ ํ†ตํ•ด ํ•˜๋Š”๋ฐ ์ด๋ฒˆ์— recoil์˜ ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ๋” ์„œ์น˜๋ฅผ ํ•˜๋‹ค๊ฐ€ Atom Effects์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. Recoil ๊ณต์‹ ํŽ˜์ด์ง€์˜ Atom Effects ์„ค๋ช…์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค. atom effects - recoil recoil ๊ณต์‹ ํŽ˜์ด์ง€์—์„œ ์†Œ๊ฐœํ•˜๋Š” atom effects๋Š” ๋ถ€์ˆ˜ํšจ๊ณผ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  Recoil์˜ atom์„ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ๋™๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” API๋ผ๊ณ  ์„ค๋ช…ํ•œ๋‹ค. Atom Effects - ์ƒํƒœ ์ง€์†์„ฑ - ์ƒํƒœ ๋™๊ธฐํ™” - ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ - ๋กœ๊น… ๋“ฑ์— ์œ ์šฉํ•˜๊ณ  React Effects์™€๋„ ์œ ์‚ฌํ•˜์ง€๋งŒ Atom Effects๋Š” atom์„ ์ •์˜ํ•  ๋•Œ atom ์ •์˜์˜ ์ผ๋ถ€๋กœ..
[ React / Select ] Select์˜ defaultValue ๋ฅผ state๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์  ๋ณ€๊ฒฝ ์‹œํ‚ค๊ธฐ. โ—๏ธ ์ด์Šˆ ๋ฐœ์ƒ React ํ”„๋กœ์ ํŠธ๋ฅผ ์ž‘์—… ์ค‘์— ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๋ฅผ state๋กœ ๊ด€๋ฆฌํ•ด์„œ ํ•„ํ„ฐ๋ง ์˜ต์…˜์„ ์„ ํƒํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋™์  ํ•„ํ„ฐ๋ง ๊ตฌ์กฐ๋กœ ์ž‘์—… ์ค‘์— ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋“ค์€ ๋™์  ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์ด ์ž˜ ์ ์šฉ๋˜๋Š”๋ฐ, Select์˜ defaultValue๋Š” ์ด์ „ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๊ฐ–๊ณ  ๋™์  ํ•„ํ„ฐ๋ง์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ import React, {useState, useEffect} from 'react'; // UI Library๋Š” Antdesign์„ ์‚ฌ์šฉ. import { Select } from 'antd'; const { Option } = Select; const data = [ {name: "Lee", isStudent: false}, {name: "Kim", isStude..
[ React / antd ] react ant-design theme ๋ณ€๊ฒฝ ( custom theme ) React์—์„œ antd๋ฅผ ์‚ฌ์šฉ์ค‘์—, custom theme๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. antd์˜ ๊ณต์‹ ํŽ˜์ด์ง€(https://ant.design/docs/react/customize-theme)์—์„œ customize์— ๋Œ€ํ•ด ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…์„ ์จ ์ฃผ์—ˆ์ง€๋งŒ, ๋‚œ ์™œ์ด๋ ‡๊ฒŒ ์ฝ๊ธฐ๊ฐ€ ์–ด๋ ค์šด๊ฑด์ง€..ใ… ใ… ใ… ใ… ... * LinkedIn ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑ. 1. Create React App ์„ ํ†ตํ•ด ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ. npx create-react-app 2. antd ํŒจํ‚ค์ง€ ์„ค์น˜ // 1) npm install antd ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ํŒจํ‚ค์ง€ ์„ค์น˜ npm install antd // 2) npm install less -g ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ less ์ „์—ญ ์„ค์น˜. npm install -g less 3...
[ React / Architecture ] React ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์งœ์•ผํ• ๊นŒ? ** React ๊ณต์‹ ํŽ˜์ด์ง€ ํŒŒ์ผ ๊ตฌ์กฐ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ณต๋ถ€ ๋ชฉ์ ์œผ๋กœ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ** 1. ๊ธฐ๋Šฅ ๋˜๋Š” ๋ผ์šฐํŠธ ๋‹จ์œ„๋กœ ๋ถ„๋ฅ˜ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ, ๋ผ์šฐํŠธ(ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ๋กœ) ํด๋”์— ํ•ด๋‹น ๋ผ์šฐํŠธ์™€ ๊ด€๋ จ๋œ CSS, JS ๋“ฑ์„ ๊ฐ™์ด ๋‘๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์„œ๋น„์Šค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ถ”๋ฆฌ๊ณ , ๊ทธ ๊ธฐ๋Šฅ๋“ค์„ ์–ผ๋งˆ๋‚˜ ์„ธ๋ถ„ํ™”ํ• ์ง€ ๊ณ ๋ฏผ ํ›„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ๋‚ด๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ด๋Ÿฐ ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ•์ธ๋ฐ, ์„œ๋น„์Šค์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ or ์„œ๋น„์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ทธ ์•ˆ์— ํŒŒ์ผ๋“ค์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์—๊ฒŒ๋Š” ๊ฐ€์žฅ ์ต์ˆ™ํ•œ ๋ฐฉ๋ฒ•์ธ ๊ฒƒ ๊ฐ™๋‹ค. common/ Avatar.js Avatar.css APIUtils.js APIUtils.test.js feed/ index.js Feed.js Feed.css FeedStory.js FeedSt..