React

ยท React
๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ƒํƒœ๋Š” ๋ฐฐ์—ด ํƒ€์ž…์ด๊ณ , ๋ฐฐ์—ด์˜ ์š”์†Œ๋Š” ๊ฐ object ๊ฐ์ฒด์ด๋‹ค. const initialState = [{id: '1', isDone: false }, {id: '2', isDone: false }, ...] ๋ชฉํ‘œ ์œ„์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ „์—ญ ์ƒํƒœ state ๋ฐฐ์—ด์—์„œ ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋ฅผ ๋จผ์ € ์ฐพ๊ณ , isDone ์†์„ฑ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค. redux toolkit์„ ์‚ฌ์šฉํ•ด์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ, ๋ฐฐ์—ด ์•ˆ ํŠน์ • ์š”์†Œ์˜ ์†์„ฑ isDone์„ ์œ ์ €๊ฐ€ ๋ˆ„๋ฅด๋Š” checkbox ์ด๋ฒคํŠธ ๊ฐ’๋Œ€๋กœ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค. UI ์ฝ”๋“œ ์œ ์ €๊ฐ€ ์ฒดํฌํ•˜๋Š” ์ฒดํฌ๋ฐ•์Šค์˜ event.target.checked ๊ฐ’์„ ๋ฐ›์•„์„œ rtk ์Šฌ๋ผ์ด์Šค๋กœ dispatchํ•˜๋Š” ์ฝ”๋“œ export interface Todo { id: string; isDo..
ยท React
์ƒํ™ฉ d3 ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ line ์ฐจํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š”๋ฐ, ์ฐจํŠธ์— ๊ทธ๋ ค์ง€๋Š” value ๊ฐ’์ด 0์ผ๋•Œ๋Š” ๋ผ์ธ ์ฐจํŠธ๊ฐ€ ์•„์˜ˆ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ๊ฐ’์ด ์žˆ์„๋•Œ๋Š” ์ฐจํŠธ๊ฐ€ ๊ทธ๋ ค์ง€๋‹ค๊ฐ€ 0์ด ๋‚˜์˜ค๋ฉด ์ฐจํŠธ๊ฐ€ ๋Š๊ธฐ๋Š” ์ด์ƒํ•œ ํ˜„์ƒ์ด ์žˆ์—ˆ๋‹ค. Error: attribute d: Expected number, "M36.5,NaNL79.5,NaNL122…". ๊ฒŒ๋‹ค๊ฐ€ ์ฝ˜์†”์—๋Š” ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ์ฐํžˆ๊ณ  ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด import { line } from 'd3-shape'; const LineChart = ({bars, xScale, yScale}) => { const lineGenerator = line() .x((bar) => xScale(bar.data.indexValue) + bar.width / 2) .y((bar) => yScal..
ยท React
react ๊ธฐ๋ณธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“ค์–ด๋‘” todo app์„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์šฐ๊ณ  ํ•œ๋ฒˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ด๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ฉด์„œ ์ปดํŒŒ์ผ์—์„œ ์—๋Ÿฌ ๋‚ด์ฃผ๋Š” ๊ฒƒ๋“ค์„ ๋‚˜๋ฆ„ ์ด๊ฒƒ์ €๊ฒƒ ํ•ด๋ณด๋ฉด์„œ ๋นจ๊ฐ„ ์ค„ ๋‹ค ์—†์•ด๋‹ค๊ณ  ์ข‹์•„ํ–ˆ๋Š”๋ฐ ์‹ค์ œ๋กœ ์ผœ๋ณด๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์งˆ ์•Š๋Š” ๊ฒƒ....??? ์ด๊ฑธ ๋””๋ฒ„๊น… ํ•˜๋Š”๋ฐ๋„ ์‹œ๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ๋“ค์˜€๋Š”์ง€... ^^ ๋‹ค์Œ์—” ์‹ค์ˆ˜ํ•˜์ง€ ์•Š๊ธฐ์œ„ํ•ด ๊ธฐ๋กํ•ด๋ณธ๋‹ค! ๐Ÿ“Œ ๋ฌธ์ œ form ํƒœ๊ทธ์— submit ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•ด๋‘์–ด์„œ input์„ ์ž‘์„ฑํ•˜๊ณ  ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‚ด์šฉ์ด ์„œ๋ฒ„๋กœ ๊ฐ€๊ณ  ํ™”๋ฉด ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๊ฐ€ ๋˜์–ด์•ผํ•จ. But, ์ž๊พธ ํ™”๋ฉด์ด ์ƒˆ๋กœ๊ณ ์นจ๋จ. ์•„๋ฌด๋Ÿฐ ์ฝ˜์†”๋„ ์•ˆ๋ณด์ด๊ณ  ๊ทธ๋ƒฅ ์™„์ „ ์ƒˆ๋กœ์šด ํ™”๋ฉด ์ด๊ฒŒ e.preventDefault()๊ฐ€ ์ž‘๋™์„ ์•ˆํ•ด์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€๋„ ํ•œ์ฐธ ์ดํ›„์— ๊นจ๋‹ฌ์•˜๋‹ค... ๐Ÿ˜‚ form ํƒœ๊ทธ ์‚ฌ์šฉํ•˜..
ยท React
hana@Hanaui-MacBookAir ~ % npm install -g typescript npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /usr/local/lib/node_modules/typescript npm ERR! errno -13 npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/typescript' npm ERR! [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/typescript'] { npm ERR! errno: -13, npm ERR! code: 'EACCES',..
ยท React
ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํ•ด๊ฒฐํ•˜๊ธฐ์–ด๋ ค์›Œ์„œ ์• ๋จน์—ˆ๋˜ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ๋ฐ”๋กœ App.js์˜ useEffect ๋น„๋™๊ธฐ์š”์ฒญ์˜ ์‹คํ–‰์ˆœ์„œ ๋ถ€๋ถ„์ด๋‹ค. ์˜ˆ์ƒํ–ˆ๋˜ ์‹คํ–‰์ˆœ์„œ์— ๋”ฐ๋ผ ์‹คํ–‰์ด๋˜์ง€์•Š์•„ ์‚ฌ์šฉ์ž ์ธ๊ฐ€๊ฐ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ ํŽ˜์ด์ง€ (ex ๋งˆ์ดํŽ˜์ด์ง€)์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค์ง€ ๋ชปํ•˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ ๋•Œ ๊นŒ์ง€๋„ ํ•ด๊ฒฐ์ด๋˜์ง€ ์•Š์•„ ์ž„์‹œ๋ฐฉํŽธ์œผ๋กœ ํ•ด๊ฒฐํ•ด๋‘๊ณ , ์ดํ›„ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ฉด์„œ๋„ ๊ทธ ์ด์Šˆ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ์ฐพ์•„๋ณด๊ณ  ์ ์šฉํ•ด๋ณด์•˜์ง€๋งŒ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ํ”Œ์ ์ด ๋๋‚˜๊ณ  ์•ฝ 1๋‹ฌ์ด ์ง€๋‚œ๋ฌด๋ ต.. ๊ฐ™์ด ๊ฐœ๋ฐœํ–ˆ๋˜ ์šฐ๋ฆฌํŒ€ ์ˆ˜์ง„๋‹˜ํ•˜๊ณ  ๋””์Šค์ฝ”๋“œ๋กœ ๊ทผํ™ฉ์ฃผ๊ณ  ๋ฐ›๋‹ค๊ฐ€ ๊ทธ ์ด์Šˆ์— ๋Œ€ํ•ด ์–˜๊ธฐํ•˜๊ฒŒ๋˜์—ˆ๊ณ  ๊ทธ๋‚  ๊ทธ ๋ฌธ์ œ๋ฅผ digginggํ•˜๋‹ค๊ฐ€ ๋“œ๋””์–ด...!!! ์ƒˆ๋ฒฝ 3์‹œ๊ฐ€ ๋„˜์–ด์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ๐Ÿ˜ญ ์ •๋ง ... ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  u..
ยท React
์ฝ”๋“œ์Šคํ…Œ์ด์ธ ๋ฅผ ์ˆ˜๋ฃŒํ•˜๊ณ  20์ผ๋™์•ˆ ๊ธฐ์ˆ ๋ฉด์ ‘ ์Šคํ„ฐ๋”” ์ฑŒ๋ฆฐ์ง€๋ฅผ ์ฐธ์—ฌํ–ˆ๋‹ค! ์ด๊ฑธ ๋งค์ผํ•  ์ˆ˜ ์žˆ์„๊นŒ? ํ–ˆ๋Š”๋ฐ ๋˜ ํ•˜๋‹ค๋ณด๋‹ˆ ๊ธˆ๋ฐฉ 20์ผ์ด ๋‹ค๊ฐ”๋‹ค๋Š”... ๋งค์ผ ๊ธฐ์ˆ ๋ฉด์ ‘ ์งˆ๋ฌธ์ด ์˜ฌ๋ผ์˜ค๋ฉด ๋‹ต๋ณ€ ์ ๋Š” ์—ฐ์Šต์„ ํ•˜๋ฉด์„œ ๊ฐœ๋…๋„ ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ญ์‹œ ๊ธฐ์ˆ ์„ ๋ง๋กœ ์„ค๋ช…ํ•˜๋ ค๋‹ˆ ๋” ์–ด๋ ค์šด๊ฒƒ.. ^^ ๋‚˜ ์–ธ์ œ ๊ธฐ์ˆ ์ž๋  ์ˆ˜ ์žˆ์ง€..? 20์ผ ์ฑŒ๋ฆฐ์ง€์—์„œ ๋ฐ›์•˜๋˜ ์งˆ๋ฌธ๊ณผ ๋‚ด๊ฐ€ ์ ์€ ๋‹ต๋ณ€๋“ค์„ ๋ธ”๋กœ๊น…ํ•ด๋ณธ๋‹ค. 1. ๋ฐฐ์—ด, ๊ฐ์ฒด๋ฅผ const๋กœ ์„ ์–ธํ–ˆ๋Š”๋ฐ ์š”์†Œ, ์†์„ฑ์„ ์ถ”๊ฐ€๊ฐ€๋Šฅํ•œ ์ด์œ  const ํ‚ค์›Œ๋“œ๋Š” ์žฌ์„ ์–ธ๊ณผ ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ const๋กœ ์„ ์–ธํ•œ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์— ์š”์†Œ, ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์žฌํ• ๋‹น์˜ ๊ฐœ๋…์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’ ์ž์ฒด๊ฐ€ ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฃผ์†Œ๊ฐ’์ด ํ• ๋‹น๋˜๊ธฐ ๋•Œ..
ยท React
๋ฆฌํŒฉํ† ๋ง ์ดํ›„ ๋ฐ๋ชจ input์ด ๋น„์–ด์žˆ์„๋•Œ + ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋ชจ๋‘ ํ†ต๊ณผํ•˜๊ธฐ ์ „์—๋Š” ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด disabled ๋˜์–ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ์ˆ˜ ์—†๋‹ค. ๋ชจ๋“  ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•ด์•ผ์ง€ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์— ๋ถˆ์ด ๋“ค์–ด์˜ค๊ณ  ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์„œ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ๊ตฌํ˜„์‹œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  input์ฐฝ์„ useState hook ์ƒํƒœ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”์—†์ด, react-hook-form ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„์ž…ํ•ด์„œ form์„ ์™„์„ฑํ–ˆ๋‹ค. react-hook-form์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„๋กœ ํ†ต์‹ ์ด ๊ฐ€๊ธฐ ์ด์ „์— ํด๋ผ์ด์–ธํŠธ์—์„œ ํ•ด์•ผ๋˜๋Š” ์œ ํšจ์„ฑ๊ฒ€์‚ฌ๋ฅผ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋กœ ์งค ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. react-hook-form ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต์‹ ๋ฌธ์„œ์˜ ํƒ€์ดํ‹€๋„ Simple React forms ..
ยท React
VSCode ํ…Œ๋งˆ๋ฅผ ๋งˆ์Œ์— ๋“œ๋Š” ํ…Œ๋งˆ๋กœ ๋ณ€๊ฒฝํ–ˆ๋Š”๋ฐ ์ด๋Ÿด๋•Œ๊ฐ€ ์žˆ๋‹ค. ์•„ ์ด ์ƒ‰๊น”๋งŒ ์ข€ ๋ฐ”๊ฟ€์ˆ˜ ์—†๋‚˜.. ๋‹ค๋ฅธ ๊ฑด ๋‹ค ๊ดœ์ฐฎ์€๋ฐ ์ด ์ƒ‰๊น”์ด ๋„ˆ๋ฌด ๊ฑฐ์Šฌ๋ ค ใ… ใ…  ์ด๋ฒˆ์— pc๋ฅผ ๋ฆฌ์…‹๋‹นํ•˜๊ณ ? ํ”„๋กœ์ ํŠธ ๋„์ค‘์— ๊ธ‰ํ•œ๋Œ€๋กœ vscode์— ๋‚ด์žฅ๋˜์–ด์žˆ๋Š” ํ…Œ๋งˆ ์ค‘ ๊ทธ๋ž˜๋„ ์ ค ๋ง˜์— ๋“œ๋Š”๊ฑธ๋กœ ๋ณ€๊ฒฝํ–ˆ๋Š”๋ฐ.. ๋„์ €ํžˆ.. ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์†ํ•˜๋Š”๋ฐ ์ € JSX ํƒœ๊ทธ์˜ ๋นจ๊ฐ„ ๊ธ€์”จ๊ฐ€ ๋„ˆ๋ฌด๋„ˆ๋ฌด ๋ˆˆ์ด ์•„ํŒ ๋‹ค... ์ด๋ ‡๊ฒŒ ์ปดํฌ๋„ŒํŠธ ํƒœ๊ทธ๊ฐ€ ์ฃ„๋‹ค ๋นจ๊ฐ„์ƒ‰ ... ์œฝ.. ์ž.. ํ•œ๋ฒˆ ๋ฐ”๊ฟ”๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.. ํŠน์ • ํƒœ๊ทธ๋งŒ ๋ฐ”๊พธ๋ ค๋ฉด ๋ญ๋กœ ๊ฒ€์ƒ‰ํ•ด์•ผ๋˜๋Š”์ง€ ...? ๋ฐ”๊พธ๋Š”๋ฐ๋„ ์กฐ์ฝค ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์–ด์„œ ์ ์–ด๋ณด๋Š” ํฌ์ŠคํŒ… ๋จผ์ € VSCode ์„ค์ • Settings ๋กœ ๊ฐ€์„œ editor: token ์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•œ๋‹ค. ์ดˆ์ฐฝ๊ธฐ์—” ์ผ์ผ์ด settings ์—์„œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋‹ค ์ฐพ๊ณ  ๋‹ค๋…”๋Š”๋ฐ ๋„ˆ๋ฌด ๋ฐฉ๋Œ€..
ยท React
์ตœ์ข… ๊ตฌํ˜„ ๋ชจ์Šต JSX ์ฝ”๋“œ ๋งˆํฌ์—… ๊ตฌ์กฐ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ๋งˆ์ดํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์กฐ๊ธˆ ์• ๋ฅผ ๋จน์—ˆ๋˜ ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, ์™ธ๋ถ€ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ”์—์„œ ๋งˆ์ดํŽ˜์ด์ง€ ์•ˆ์— ๋ฉ”๋‰ด ํƒญ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋˜ ๋‚ด ํ”„๋กœํ•„, ๋‚ด ๋ ˆ์‹œํ”ผ, ๋‚ด ์ข‹์•„์š”, ๋ฐ›์€ ๋Œ“๊ธ€ ๋„ค๊ฐœ์˜ ํƒญ์„ ๊ฐ๊ฐ ํ•˜๋‚˜์”ฉ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” useState๋ฅผ ์ด์šฉํ•ด์„œ ์ƒํƒœ๋กœ ์ฒ˜์Œ currentTab์„ 0์œผ๋กœ ๋‘๊ณ , ํ˜„์žฌ ๋ˆŒ๋Ÿฌ์ง„ ํƒญ์ด currentTab์ด ๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ํ–ˆ๋”๋‹ˆ ๋งˆ์ดํŽ˜์ด์ง€์— ๋“ค์–ด์˜ค๋ฉด ๋ฌด์กฐ๊ฑด ์ƒํƒœ๊ฐ€ 0๋ฒˆ์งธ์ธ ๋‚ด ํ”„๋กœํ•„๋กœ ์‹œ์ž‘์ด๋˜๊ณ , ์™ธ๋ถ€์—์„œ ๋งˆ์ดํŽ˜์ด์ง€ ๊ฐ๊ฐ์˜ ํƒญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ const [currentTab, setCurrentTab] = useState(0); {menuArr.ma..
hana1203
'React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)