๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (93) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [ JS ] Promise VS async await ๋น๊ต ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ ์ฃผ์ ๋ฐฉ์์ธ Promise์ async/await์ ๋ํด ๋น๊ตํด๋ณด๋ ค๊ณ ํ๋ค. ํ์ ์์ ์ ํ๋ฉด์ ๋์ ์ฌ์ฉํ๋๋ฐ, ์ ํํ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์ฐจ์ด์ ๊ณผ ํน์ง์ ๋น๊ตํด๋ณด๋ ค๊ณ ํ๋ค. (๋ ๋ค ES6+ ์ดํ์ ๋์ ๋์๋ค.) 1. ๋ฌธ๋ฒ - Promise: `.then()`, `.catch()`, `.finally()` ๋ฉ์๋๋ฅผ ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉ. - async/await: ๋ ๋๊ธฐ์ ์ธ ์ฝ๋ ์คํ์ผ์ด๋ฉฐ `try/catch` ๊ตฌ๋ฌธ์ผ๋ก ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ค. 2. ๊ฐ๋ ์ฑ - Promise: ๋ณต์กํ ๋น๋๊ธฐ ๋ก์ง์์๋ ์ค์ฒฉ๋ `.then()`์ผ๋ก ์ธํด "์ฝ๋ฐฑ ์ง์ฅ"๊ณผ ์ ์ฌํ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค. - async/await: ์ผ๋ฐ์ ์ผ๋ก ๋ ์ฝ๊ธฐ ์ฌ์ด ์ง๊ด์ ์ธ ์ฝ๋๋ฅผ .. [ React ] React์ export์ export default ์ฐจ์ด์ ์์๋ณด๊ธฐ SyntaxExport ๊ตฌ๋ฌธ, Import ๊ตฌ๋ฌธ ๊ฐ๋จ ์ ๋ฆฌํDefaultexport default function Button() {}import Button from './button.js';Namedexport function Button() {}import { Button } from './button.js'; ๋ณดํธ์ ์ผ๋ก ํ ํ์ผ์์ ํ๋์ ์ปดํฌ๋ํธ๋ง export ํ ๋ default export ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ฅผ export ํ ๊ฒฝ์ฐ์ named export ๋ฐฉ์์ ์ฌ์ฉํ๋ค. React์์ `export`์ `export default`์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ๋ค.1. export - ์ฌ๋ฌ ๊ฐ์ ๊ฐ(ํจ์, ๊ฐ์ฒด, ์์ ๊ฐ ๋ฑ)์ ๋ด๋ณด๋ผ ์ ์๋ค. - ๊ฐ์ ธ์ฌ ๋ ์ค๊ดํธ.. [ ๊ฐ๋ฐ๋์ ์ถ์ฒ ] ๋ฆฌํฉํฐ๋ง 2ํ ํ์ฌ์์ ๋ด๊ฐ ์ ๋ง ์ข์ํ๋ ์ ์๋ถ์ด ์ถ์ฒํด ์ฃผ์ ์ฑ .์ฌ์ค ์ด๋ป๊ฒ ์ฝ๋๋ฅผ ์ง์ผ ์ข์ ์ฝ๋์ผ๊น?๋ผ๋ ๊ณ ๋ฏผ๊ณผ ์๊ฐ์ ๋ง์ด ํด๋ดค์ง๋ง, ๊ตฌ์ฒด์ ์ผ๋ก ๋ฆฌํฉํ ๋ง์ ํ๊ฒ ๋ ๋, ์ด๋ป๊ฒ ๊ตฌ์กฐ๋ฅผ ์ง๊ณ , ์ด๋ป๊ฒ ํจ์จ์ ์ผ๋ก ๊ตฌํํด์ผ ํ๋์ง ๊น๊ฒ ๊ณ ๋ฏผํด๋ณด์ง๋ ์์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ์ด ์ฑ ์ ์ฝ์ผ๋ฉด์ ๋ฆฌํฉํ ๋ง์ ๋ํ ๊ธฐ์ค๊ณผ ๊ฐ์ ๋ฐฉ์์ ๋ํด ๊ณ ๋ฏผํด ๋ณด๋ ค๊ณ ๊ตฌ๋งคํ์๋ค. ์ผ๋จ ๋๋ ๊ต๋ณด๋ฌธ๊ณ ์จ๋ผ์ธ์์ ์ฃผ๋ฌธํ์๊ณ , ๊ฐ๊ฒฉ์ 31,500์์ด์๋ค. ์ถํ์ฌ๋ ๋ด๊ฐ IT์์ ์ ๊ตฌ๋งคํ ๋, ๊ฐ์ฅ ์ข์ํ๋ ํ๋น๋ฏธ๋์ด ์ถํ์ด์๊ณ , ์ ์๋ ๋ฌด๋ ค '๋งํด ํ์ธ๋ฌ'์ด๋ค. ์ด ์ฑ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ฆฌํฉํ ๋ง์ ๋ํด ์ค๋ช ๋์ด์๋ค. ์ฑ ์ ์ ๋ถ๋ฅผ ์ฝ์ ์๊ฐ์ด ์๋ค๋ฉด, ์๋์ ๊ฐ์ด ์ต๋ํ๋ผ๊ณ ๊ฐ์ด๋๊ฐ ๋์์๋ค. 1. ๋ฆฌํฉํ ๋ง์ด ๋ญ์ง ๋ชจ๋ฅธ๋ค๋ฉด 1์ฅ์ .. [ JS ] Event.stopPropagation์ Event.preventDefault ์ ์ฐจ์ด์ ์์๋ณด๊ธฐ. JavaScript์์ ์์ฃผ ์ฌ์ฉ๋์ง๋ง ์ข ์ข ํผ๋๋๋ ๋ ๊ฐ์ง ๋ฉ์๋์ธ Event.stopPropagation()๊ณผ Event.preventDefault()์ ๋ํด ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค. Event.stopPropagation() `stopPropagation()` ๋ฉ์๋๋ ์ด๋ฒคํธ์ ๋ฒ๋ธ๋ง์ ์ค์ง์ํจ๋ค. element.addEventListener('click', function(event) { event.stopPropagation(); // ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ก์ง}); ์ฃผ์ ํน์ง )- ์ด๋ฒคํธ๊ฐ ์์ ์์๋ก ์ ํ๋๋ ๊ฒ์ ๋ง๋๋ค.- ์ค์ฒฉ๋ ์์์์ ํน์ ์ด๋ฒคํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ถ์ ๋ ์ ์ฉํ๋ค. ์ฌ์ฉ ์์ )์ค์ฒฉ๋ div์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ํด๋น div์์๋ง ์ด.. [ React ] Chart UI ๊ตฌํ์ ์ํ React ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฆฌ Chart ๊ด๋ จ Libraries ์ ๋ฆฌ ๊ธ 1.Rechartsโญ 20.3k ์ ์ธ๊ธฐ ์๋ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. (์ค๊ตญ ํ์ฌ)storybook์ ํตํ UI ๋ช ์ธ๊ฐ ์๊ณ , ๊ต์ฅํ ๋ค์ํ ์ฐจํธ ์ปดํฌ๋ํธ ์ง์.https://recharts.org/en-US 2.nivoโญ 11.4khttps://nivo.rocks/components/ 3.apexchartsโญ 12.5k์์๊ณ ์๊ธฐ์๊ธฐํ ๋์์ธ, React ์ปดํฌ๋ํธ ์์(class ์ปดํฌ๋ํธ ๊ธฐ๋ฐ), ์ปค์คํฐ๋ง์ด์ง ์์ ๋ ๋์.https://apexcharts.com/ 4.react-chartjs-2โญ 5.9kChart.js ์ฉ React Component ๋ผ์ด๋ธ๋ฌ๋ฆฌ. Chart.js V3,V4๋ฅผ ์ํฌํธํจ. (๊ฐ์ฅ ์ธ๊ธฐ ๋ง.. React์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Zustand์ ๋ํ ๊ฐ๋ต ์ ๋ฆฌ๊ธ. ๋ ์ผ์ด๋ก "์ํ"๋ฅผ ์๋ฏธํ๋ Zustand๋ React ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋จ์ํ๋ Flux ํจํด์ ์ฌ์ฉํ๋ ์๊ณ ๋น ๋ฅธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.hook์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ ๊ฐํธํ API๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ต์ํ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์ํ ๊ด๋ฆฌ๋ฅผ ์ง๊ด์ ์ด๊ณ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค๋ค. ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ํน์ง 1. ์ฌํํ API: Zustand์ API๋ ๋งค์ฐ ๊ฐ๋จํ๋ค. ๋ณดํต 1~2๊ฐ์ hook๋ง ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ์ ์ํ๊ณ , ์ด๋ฅผ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์๋ค. ์ฃผ๋ก `create` ํจ์์ `useStore` ํ ์ ์ฌ์ฉํ๋ค.2. ์ด๊ฒฝ๋: Zustand๋ ๊ฒฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํฌ๊ธฐ๊ฐ ์๊ณ ๋น ๋ฅด๋ค. React Context API ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ๋ค๋ฅธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋น.. [ Sentry ] F.E์์ Sentry๋ฅผ ํ์ฉํ์ฌ ๋๋ฒ๊น ํ๊ธฐ. ํ๋ก ํธ์๋์์ ๊ฐ๋ฐ ๋ฐ ์ด์์ ํ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํ๋ค. ํ์ฌ ์ฐ๋ฆฌ ํ์ฌ๋ ํ๋ก ํธ์๋์ ๋๋ฒ๊น ํด๋ก ์ผํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์ ๊ฐ๋จํ ์๊ฐํ๋ ค๊ณ ํ๋ค. ์ผํธ๋ฆฌ๋ ์น, ๋ชจ๋ฐ์ผ ์ฑ, ๊ฒ์๋ฑ์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ๊ณ ๋ถ์ํ์ฌ ์์ธก ๊ฐ๋ฅํ ์ค๋ฅ์ ์์ธก ๋ถ๊ฐ๋ฅํ ์ค๋ฅ๋ค์ ๋ํด ํ์ง๋ฅผ ์ํ ํด์ด๋ค. ์ฒ์์๋ ์คํ ์์ค ํ๋ก์ ํธ๋ก ์์ํ์์ผ๋ ํ์ฌ๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค์ ์จํ๋ ๋ฏธ์ค ์ค์น ๋ฒ์ ์ ๋ชจ๋ ์ ๊ณตํ๋ค. ์ผํธ๋ฆฌ๋ฅผ ์ ํ์ฉํ์ฌ ๊ณ ๊ฐ๋ค์๊ฒ ๋ ๋์ ํ์ง์ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค. ์ผํธ๋ฆฌ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๋ค 1. ์๋ฌ ๋ชจ๋ํฐ๋ง์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํ๋ ๋ชจ๋ ์๋ฌ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๊ธฐ๋กํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ด๋ค ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ๋ฐ๋ก ์ ์ ์๋๋ก ๋์์ค๋ค.. [ WEB ] iOS์์ SVG ์ด๋ฏธ์ง๊ฐ ๊นจ์ ธ ๋ณด์ผ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ ํ์ฌ์์ iOS๊ฐ๋ฐ ํํธ์ ์ด์ ํฐ์ผ์ด ๋ฐํ๋์๋๋ฐ, AOS์์๋ ์ด๋ฏธ์ง๊ฐ ์ ์์ ์ธ ํด์๋๋ก ๋ ธ์ถ๋๋ ๋ฐ๋ฉด, iOS ์์๋ ์ด๋ฏธ์ง๊ฐ ๊นจ์ ธ ๋ณด์ด๋ ์ด์๊ฐ ์์๋ค. ํด๋น ์ด๋ฏธ์ง๋ SVG ๋ฒกํฐ ์ด๋ฏธ์ง๋ผ ์ด๋ก ์์ผ๋ก ๋น์ฐํ ๊นจ์ง๋ ์ด์๊ฐ ์์ด์ผ ํ๋ ๊ฒ ๋ง๋๋ฐ ์ฐธ ์ด์ํ๋ค. iOS๊ฐ๋ฐ์ ๋ถ์ด ํด๋น ํ๋ฉด์ ์น๋ทฐ๋ผ๊ณ ์นํ๋ก ํธ ํํธ์ ์ด์ ํฐ์ผ์ ๋๊ฒจ์ฃผ์ด ํจ๊ป ์ฐพ์๋ณด์๋๋ฐ, ๊ตฌ๊ธ๋ง์ ํตํด ์ฌํ๋ฆฌ ์น๋ทฐ์์ SVG๊นจ์ง ํ์์ด ๋ฐ์ํ๊ณ ์๋ค๋ ์ฌ์ค์ ์์๊ณ , ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด์๋ค. ํ๊ทธ๋ฅผ ์ด๋ฐ ์์ผ๋ก object ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์๋ค. (, ๋ ๊ฐ๋ฅ) ๊ตฌ๊ธ๋ง์ ํด๋ณธ ๊ฒฐ๊ณผ ์์ ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ฌ์ ๋ณด์๋ค. ํ์ง๋ง ๋ชจ๋ SVG ์ด๋ฏธ์ง๋ฅผ ๋ก ์ฌ์ฉํ๊ธฐ๋ ์ค์ง์ ์ผ๋ก ์ด๋ ค์ ๋ค. (์๋ฒ์์ ์ด๋ฏธ์ง.. ์ด์ 1 2 3 4 5 ยทยทยท 12 ๋ค์