library
-
- [Next.js] Console Error Attempting to parse an unsupported color function "lab" ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (html2canvas)Console Error Attempting to parse an unsupported color function "lab" ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (html2canvas)๋ค์ด๊ฐ๋ฉฐNext.js์ TailwindCSS๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋ฐํ ๋, @html2canvas@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์นํผ์ด์ง๋ฅผ ์ด๋ฏธ์ง ํ์ผ๋ก ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๊ณ ํ ๋, ๋ค์๊ณผ ๊ฐ์ด @lab()@ ๊ด๋ จ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.Console Error Attempting to parse an unsupported color function "lab" Call Stack 10 Show 10 ignore-listed frame(s)์ด๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ฌธ์ ๋ TailwindCSS / PostCSS..
2025.09.22 -
- [Zustand] ZustandZustand๋ค์ด๊ฐ๋ฉฐ์ ์ญ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ธ Zustand์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. Zustand๊ฐ๋ ๋ ์ผ์ด๋ก ์ํ(Status)๋ผ๋ ๋ป๋ฆฌ์กํธ ์ฑ์์ ์ ์ญ ์ํ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๋ ์์ฃผ ๊ฐ๋ณ๊ณ ๋จ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌRedux์ ๋ณต์กํ ๊ตฌ์กฐ(Action, Reducer, Dispatch)๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , Hooks ๊ธฐ๋ฐ์ ๊ฐ๋จํ API ์ ๊ณต"minimal, fast, scalable"์ ๋ชฉํ๋ก ๋ง๋ค์ด์ก๋ค. ๋น๊ตRedux์ ๋น๊ตRedux๋ boilerplateํ ์ฝ๋๊ฐ ๋ง๋ค.@action@, @reducer@, @slice@๋ฅผ ์์ฑํด์ผ ํ๋ค.// Redux Toolkitconst slice = createSlice({ name: "counter", initialState: { count: 0 }, re..
1 2025.08.18 -
- [Three.js] Three.jsThree.js๋ค์ด๊ฐ๋ฉฐ์น ๋ธ๋ผ์ฐ์ ์์ 3D ๊ทธ๋ํฝ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Three.js์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. Three.js๊ฐ๋ ์น ๋ธ๋ผ์ฐ์ ์์ 3D ๊ทธ๋ํฝ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ฃผ๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์น์์ 3D ์ฝํ ์ธ ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๊ฑฐ์ ํ์๋ก ์ฌ์ฉ๋๋ ๋๊ตฌ Three.js – JavaScript 3D Library threejs.org ํต์ฌ ๊ฐ๋ โ Scene (์ฅ๋ฉด)๋ชจ๋ 3D ๊ฐ์ฒด๊ฐ ๋ฐฐ์น๋๋ ๋ฌด๋ ๊ณต๊ฐ๋๋ฌด, ๋น, ์นด๋ฉ๋ผ ๋ฑ ๋ชจ๋ ๊ฐ์ฒด๋ ์ด @scene@์ ์ถ๊ฐ๋์ด์ผ ํ๋ฉด์ ๋ ๋๋ง๋๋ค.์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฃนํํ๊ฑฐ๋ ๋ฐฐ๊ฒฝ์, ์๊ฐ ํจ๊ณผ ๋ฑ์ ์ค์ ํ ์ ์๋ค.const scene = new THREE.Scene();// ๋ฐฐ๊ฒฝ์์ ๊ฒ์ ์์ผ๋ก ์ค์ scene.backg..
4 2025.06.06 -
- [Node.js] Nodemailer ๋ผ์ด๋ธ๋ฌ๋ฆฌNodemailer ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐNode.js ํ๊ฒฝ์์ ๋ฉ์ผ์ ๊ฐ๋จํ๊ฒ ๋ณด๋ผ ์ ์๋๋ก ๋์์ฃผ๋ Nodemailer ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Nodemailer ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋ Node.js ํ๊ฒฝ์์ ์ด๋ฉ์ผ์ ์ฝ๊ฒ ๋ณด๋ผ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋จํ ์ค์ ์ผ๋ก SMTP, OAuth2 ๋ฑ์ ํ์ฉํ ์ด๋ฉ์ผ ์ ์ก์ ํ ์ ์๋ค.ํ ์คํธ์ HTML ํ์์ ์ด๋ฉ์ผ, ์ฒจ๋ถ ํ์ผ ์ ์ก ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.์คํ ์์ค๋ก ๊ด๋ฆฌ๋๊ณ ์๋ค. ์ฃผ์ ํน์งSMTP, OAuth2, AWS SES, SendGrid ๋ฑ ๋ค์ํ ์ด๋ฉ์ผ ์๋น์ค ์ง์์ด๋ฉ์ผ ๋ณธ๋ฌธ์ ์ผ๋ฐ ํ ์คํธ ๋๋ HTML ํ์์ผ๋ก ์์ฑ ๊ฐ๋ฅ์ด๋ฏธ์ง, ๋ฌธ์ ๋ฑ ํ์ผ ์ฒจ๋ถ ๊ฐ๋ฅ๊ธฐ๋ณธ ์ธ์ฆ ์ธ์๋ OAuth2๋ฅผ ์ง์ํ์ฌ ๋ณด์์ฑ ๊ฐํ์ด๋ชจํฐ์ฝ์ด๋ ๋ค..
2024.11.26 -
- [React.js] React Hook Form ๋ผ์ด๋ธ๋ฌ๋ฆฌReact Hook Form ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js) ์ ํ๋ฆฌ์ผ์ด์ ์์ ํผ(Form)์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React Hook Form์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. React Hook Form๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํผ(Form)์ ์ํ๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋จํ๊ณ ํจ์จ์ ์ด๋ฉฐ ํผํฌ๋จผ์ค๊ฐ ๋ฐ์ด๋๋ค.๋ฆฌ์กํธ์ ํ (Hook)์ ํ์ฉํ์ฌ ์ฌ์ฉํ๋ฉฐ, ํผ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๊ณผ ์ ํจ์ฑ ๊ฒ์ฆ(Validation) ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. React Hook Form - performant, flexible and extensible form libraryPerformant, flexible and extensible forms with easy-to-use validation.react-..
2024.11.23 -
- [JavaScript] Moment.js ๋ผ์ด๋ธ๋ฌ๋ฆฌMoment.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript)์์ ๋ ์ง์ ์๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ง์ด ์ฌ์ฉ๋๋ Moment.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. moment.js๊ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ ์ง์ ์๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ๊ธฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ง ๋ฐ ์๊ฐ ๊ณ์ฐ, ํ์ํ, ํ์ฑ, ์๊ฐ๋ ๋ณํ, ์๋์ ์ธ ์๊ฐ ํํ ๋ฑ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค๋ค.์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ @Date@ ๊ฐ์ฒด์ ๋น๊ตํ์ฌ ํจ์ฌ ๋ ์ง๊ด์ ์ด๊ณ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.2020๋ ๋ถํฐ Moment.js๋ ์ ์ง๋ณด์ ์ ์ฉ ๋ชจ๋๋ก ์ ํ๋์๊ณ , ์๋ก์ด ํ๋ก์ ํธ์์๋ Day.js๋ Luxon, Date-fns๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ ์ฌ์ฉํ๋๋ก ๊ถ์ฅ๋๊ณ ์๋ค. (ํ์ง๋ง ์ฌ์ ํ ๋ง์ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋๊ณ ์๋ค.)Day.jsMom..
2024.11.14 -
- [React.js] React Share ๋ผ์ด๋ธ๋ฌ๋ฆฌReact Share ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐReact Share ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. React Share๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค์ํ ์์ ๋ฏธ๋์ด ๊ณต์ ๋ฒํผ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฌ๋ฌ ์์ ๋ฏธ๋์ด ํ๋ซํผ์ ๋งํฌ๋ฅผ ๊ณต์ ํ ์ ์๋ ๋ฒํผ์ ์ ๊ณตํ๋ฉฐ, ๊ฐ๋จํ ์ค์ ์ ํตํด ๋ฒํผ์ ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ค. ์ฃผ์ ํน์ง๊ฐ๋จํ๊ฒ ์ค์นํ ์ ์๋ค.ํ์ํ ์์ ๋ฏธ๋์ด ๊ณต์ ๋ฒํผ์ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๋ค.๋ฒํผ์ ํฌ๊ธฐ, ๋ชจ์, ์คํ์ผ์ ์ฝ๊ฒ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ผ๋ฉฐ, SVG ์์ด์ฝ์ ์ฌ์ฉํ์ฌ ์คํ์ผ์ ์์ ๋กญ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค.๋ค์ํ ์์ ๋ฏธ๋์ด ํ๋ซํผ์ ์ง์ํ๋ค.Facebook, X(Twitter), LinkedIn, Pinterest, Telegram, WhatsApp, Line, R..
2024.11.01 -
- [JavaScript] Faker.js ๋ผ์ด๋ธ๋ฌ๋ฆฌFaker.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐFaker.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Faker.js๊ฐ๋ ๋ค์ํ ์ ํ์ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ, ํ ์คํธ, ๋ฐ๋ชจ์ฉ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํ ๋ ์ ์ฉํ๋ค.์ด๋ฆ, ์ฃผ์, ์ ํ๋ฒํธ, ์ด๋ฉ์ผ, ๋ ์ง, ์ด๋ฏธ์ง URL ๋ฑ์ ๋ฌด์์๋ก ์์ฑํ ์ ์๋ค.๊ด๋ฆฌ ๋ฌธ์ ๋ก 2021๋ ์ ๊ฐ๋ฐ์ด ์ค๋จ๋์๊ณ , ์ดํ ์ปค๋ฎค๋ํฐ์์ @๏ผ faker-js/faker@๋ผ๋ ์ด๋ฆ์ผ๋ก ํฌํฌ(Fork)ํ์ฌ ์ ์ง๋ณด์ํ๊ณ ์๋ค.๊ธฐ์กด์ @faker.js@๋ ๋ ์ด์ ์ ์ง๋ณด์๋์ง ์๋๋ค.์์ธํ ๋ด์ฉ์ ์ด ๊ธ์ ์ฐธ๊ณ ํ๋ค. ๋ฐ๋ผ์ ์ปค๋ฎค๋ํฐ์ ์ํด ๊ด๋ฆฌ๋๊ณ ์๋ @๏ผ faker-js/faker@๋ฅผ ์ฌ์ฉํ๋ค.Faker๋ก ์์ฑํ ๋ฐ์ดํฐ๋ ๋ฌด์์์ด๋ฉฐ ์ค์ ๋ฐ์ดํฐ๊ฐ ์๋๋ฏ..
2024.10.30 -
- [TypeScript] Zod ๋ผ์ด๋ธ๋ฌ๋ฆฌZod ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐํ์ ์คํฌ๋ฆฝํธ(TypeScript)์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฝ๊ฒ ํด์ฃผ๋ Zod ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Zod ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋ ํ์ ์คํฌ๋ฆฝํธ(TypeScript)์์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฝ๊ฒ ํด์ฃผ๋ ์คํค๋ง ์ ์ธ ๋ฐ ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌํ์ ์์ ์ฑ์ ์ ์งํ๋ฉด์ ๋ฐ์ดํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ์ ์๋๋ก ์ค๊ณ๋์ด ์๋ค.๋ฐ์ดํฐ ๊ฒ์ฆ์ ๋์ฑ ๋ช ํํ๊ณ ์ง๊ด์ ์ผ๋ก ์ํํ ์ ์๋๋ก ๋์์ค๋ค. ์ค์น$ npm install zod # yarn add zod ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋จํ ๋ฌธ์์ด(String) ์คํค๋ง๋ฅผ ๋ง๋ค ์ ์๋ค.import { z } from "zod";// creating a schema for stringsconst mySchema = z.string();// parsingmySchem..
2024.10.11 -
- [Tailwind CSS] daisyUIdaisyUI๋ค์ด๊ฐ๋ฉฐํ ์ผ์๋ CSS์ ํ์ฅ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ dasiyUI์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. daisyUI๊ฐ๋ ํ ์ผ์๋ CSS๋ฅผ ํ์ฅํ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ํ ๊ธฐ๋ณธ ์คํ์ผ์ ์ ๊ณตํ์ฌ ๋น ๋ฅด๊ฒ UI๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ก ๋์์ค๋ค.ํ ์ผ์๋ CSS์ ์ ํธ๋ฆฌํฐ ํด๋์ค์ ํจ๊ป ์ฌ์ฉ๋๋ค.๋ฒํผ, ์นด๋, ๋ชจ๋ฌ, ์๋ฆผ, ํผ ์์ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ปดํฌ๋ํธ ์คํ์ผ์ ๋ฏธ๋ฆฌ ์ ์ํด ๋ ์ํ๋ก ์ ๊ณตํ๋ค.daisyUI๋ฅผ ์ด์ฉํ๋ฉด UI๋ฅผ ์ฝ๊ฒ ์ปค์คํฐ๋ง์ด์งํ๊ณ , ์ผ๊ด์ฑ ์๋ ๋์์ธ์ ์ ์งํ๋ฉด์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋ค. ํน์งํ ์ผ์๋ CSS์ ์๋ฒฝํ๊ฒ ํธํ๋๋ฉฐ, ์ถ๊ฐ์ ์ธ ์คํ์ผ๋ง ์์ด ์ ํธ๋ฆฌํฐ ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.์ผ๊ด๋ ๋์์ธ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์, ํ๋ก์ ํธ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ UI๋ฅผ ์ ์งํ ์ ์๋ค.๋ฒํผ, ์๋ฆผ, ๋ชจ๋ฌ, ์นด๋ ๋ฑ..
1 2024.09.29 -
- [Axios] ์ ์ญ(Global)/์ปค์คํ (Custom) ์ธ์คํด์ค, ์ธํฐ์ ํฐ(Interceptor)์ ์ญ(Global)/์ปค์คํ (Custom) ์ธ์คํด์ค, ์ธํฐ์ ํฐ(Interceptor)๋ค์ด๊ฐ๋ฉฐAxios์ ์ ์ญ(Global)/์ปค์คํ (Custom) ์ธ์คํด์ค, ์ธํฐ์ ํฐ(Interceptor) ๊ฐ๋ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ์ ์ญ ์ธ์คํด์ค(Global Instance)๊ฐ๋ Axios์ ๊ธฐ๋ณธ ์ธ์คํด์ค๋ฅผ ์ค์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ๋ชจ๋ Axios ์์ฒญ์ ๊ธฐ๋ณธ์ ์ธ ์ค์ (์: @baseURL@, @headers@ ๋ฑ)์ ์ ์ฉํ ์ ์๋ค. ์ค์ ๋ฐฉ๋ฒํ๋ก์ ํธ์ @src@ ํด๋ ์์ @axios@ ํด๋๋ฅผ ๋ง๋ค๊ณ , @global.js@ ํ์ผ์ ์์ฑํ๋ค.๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.import axios from 'axios';// In latest axios version common proper..
2024.09.20 -
- [React.js] react-toastify ๋ผ์ด๋ธ๋ฌ๋ฆฌreact-toastify ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๊ฐ๋จํ๊ฒ ํ ์คํธ(Toast) ๋ฉ์์ง๋ฅผ ๋์์ผํ ๋ @react-toastify@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.@react-toastify@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. react-toastify ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ์ ๊ณตํ๋ ํ ์คํธ ๋ฉ์์ง(Notification)๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์คํ์ผ๊ณผ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ก ๊ฐ๋จํ๊ฒ ์๋ฆผ์ ๋์ธ ์ ์๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ์ด ๊ฐํธํ๋ฉฐ, ๋ค์ํ ์ฌ์ฉ์ ์ ์ ์ต์ ์ ์ ๊ณตํ์ฌ ์๋ฆผ์ ์ํ๋ ๋๋ก ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น$ npm install react-toastify # yarn add react-toastify ์ฌ..
2024.09.10 -
- [React.js] uuid, nanoid ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ (key)uuid, nanoid ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ (key)๋ค์ด๊ฐ๋ฉฐ๋ค์๊ณผ ๊ฐ์ด @map@์ ์ด์ฉํ์ฌ ์์๋ฅผ ํ๋ํ๋์ฉ ํํํ ๊ฒฝ์ฐ @key@ ๊ฐ์ ์ง์ ํด์ผ ํ๋๋ฐ ์ด๋ค๊ฐ์ @key@ ๊ฐ์ผ๋ก ์ง์ ํด์ผํ ์ง ๋ชจ๋ฅผ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.์ด๋, @uuid@ ๋๋ @nanoid@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ์ด ๊ณ ๋ฏผ์ ํด๊ฒฐํ ์ ์๋ค.import { data } from './data.js';export default const App = () => { return ( {data.map((item) => {item.content}} )} uuid ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋ @uuid@๋ Universally Unique Identifier ์ ์ฝ์๋ก, ์ ์ธ๊ณ์์ ๊ณ ์ ํ ๊ฐ์ ์์ฑํ ์ ์๋ ์๋ณ์์ด๋ค.@u..
2024.09.09 -
- [React.js] Framer Motion ๋ผ์ด๋ธ๋ฌ๋ฆฌFramer Motion ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐFramer Motion ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Framer Motion๊ฐ๋ ์ธํฐ๋ํฐ๋ธ ์น ์ ๋๋ฉ์ด์ ๊ณผ UI ๋์์ธ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฆฌ์กํธ ํ๋ ์์ํฌ์ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ์ ๋๋ฉ์ด์ ์ ๋ ์ง๊ด์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค ์ ์๊ฒ ๋์์ค๋ค.๊ฐ๋ ฅํ API๋ฅผ ์ ๊ณตํ์ฌ ๋ณต์กํ ์ ๋๋ฉ์ด์ ์ ์ฝ๊ฒ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ๋ ์์ฐ์ฑ์ ๋์ฌ์ค๋ค. ์ค์น$ npm install framer-motion # yarn add framer-motion ์ฃผ์ ๊ธฐ๋ฅ๊ธฐ๋ณธ์ ์ธ ๋ชจ์ ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ค.์์น, ํฌ๊ธฐ, ๋ถํฌ๋ช ๋ ๋ฑ์ ์์ฑ์ ์ ๋๋ฉ์ด์ ํํ ์ ์๋ค.๋๋๊ทธ์ ๊ฐ์ ์ธํฐ๋์ ์ ์์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.์๋ฅผ..
2024.08.11