๋ฐ์ดํฐ ๊ตฌ์กฐ ์ํ๋ ๋ฐฐ์ด ํ์
์ด๊ณ , ๋ฐฐ์ด์ ์์๋ ๊ฐ 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 ๊ธฐ๋ณธ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ค์ด๋ todo app์ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์ฐ๊ณ ํ๋ฒ ๋ง์ด๊ทธ๋ ์ด์
ํด๋ณด์๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ฉด์ ์ปดํ์ผ์์ ์๋ฌ ๋ด์ฃผ๋ ๊ฒ๋ค์ ๋๋ฆ ์ด๊ฒ์ ๊ฒ ํด๋ณด๋ฉด์ ๋นจ๊ฐ ์ค ๋ค ์์ด๋ค๊ณ ์ข์ํ๋๋ฐ ์ค์ ๋ก ์ผ๋ณด๋ ์ ๋๋ก ์๋ํ์ง ์๋ ๊ฒ....??? ์ด๊ฑธ ๋๋ฒ๊น
ํ๋๋ฐ๋ ์๊ฐ์ ์ผ๋ง๋ ๋ค์๋์ง... ^^ ๋ค์์ ์ค์ํ์ง ์๊ธฐ์ํด ๊ธฐ๋กํด๋ณธ๋ค! ๐ ๋ฌธ์ form ํ๊ทธ์ submit ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํด๋์ด์ input์ ์์ฑํ๊ณ ์ถ๊ฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ด์ฉ์ด ์๋ฒ๋ก ๊ฐ๊ณ ํ๋ฉด ๋ฆฌ์คํธ์ ์ถ๊ฐ๊ฐ ๋์ด์ผํจ. But, ์๊พธ ํ๋ฉด์ด ์๋ก๊ณ ์นจ๋จ. ์๋ฌด๋ฐ ์ฝ์๋ ์๋ณด์ด๊ณ ๊ทธ๋ฅ ์์ ์๋ก์ด ํ๋ฉด ์ด๊ฒ e.preventDefault()๊ฐ ์๋์ ์ํด์ ๊ทธ๋ฐ๊ฑด์ง๋ ํ์ฐธ ์ดํ์ ๊นจ๋ฌ์๋ค... ๐ form ํ๊ทธ ์ฌ์ฉํ..
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',..
ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ฐ์ฅ ํด๊ฒฐํ๊ธฐ์ด๋ ค์์ ์ ๋จน์๋ ๋ถ๋ถ์ด ์๋ค. ๋ฐ๋ก App.js์ useEffect ๋น๋๊ธฐ์์ฒญ์ ์คํ์์ ๋ถ๋ถ์ด๋ค. ์์ํ๋ ์คํ์์์ ๋ฐ๋ผ ์คํ์ด๋์ง์์ ์ฌ์ฉ์ ์ธ๊ฐ๊ฐ ์ ๋ณด๊ฐ ํ์ํ ํ์ด์ง (ex ๋ง์ดํ์ด์ง)์์ ์๋ก๊ณ ์นจ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค์ง ๋ชปํ๋ ์ด์๊ฐ ์์๋ค. ํ๋ก์ ํธ๊ฐ ๋๋ ๋ ๊น์ง๋ ํด๊ฒฐ์ด๋์ง ์์ ์์๋ฐฉํธ์ผ๋ก ํด๊ฒฐํด๋๊ณ , ์ดํ ๋ฆฌํฉํ ๋ง์ ํ๋ฉด์๋ ๊ทธ ์ด์์ ๋ํด ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ฐพ์๋ณด๊ณ ์ ์ฉํด๋ณด์์ง๋ง ์ฝ๊ฒ ํด๊ฒฐ์ด ๋์ง ์์๋ค. ํ์ ์ด ๋๋๊ณ ์ฝ 1๋ฌ์ด ์ง๋๋ฌด๋ ต.. ๊ฐ์ด ๊ฐ๋ฐํ๋ ์ฐ๋ฆฌํ ์์ง๋ํ๊ณ ๋์ค์ฝ๋๋ก ๊ทผํฉ์ฃผ๊ณ ๋ฐ๋ค๊ฐ ๊ทธ ์ด์์ ๋ํด ์๊ธฐํ๊ฒ๋์๊ณ ๊ทธ๋ ๊ทธ ๋ฌธ์ ๋ฅผ digginggํ๋ค๊ฐ ๋๋์ด...!!! ์๋ฒฝ 3์๊ฐ ๋์ด์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค. ๐ญ ์ ๋ง ... ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ u..
์ฝ๋์คํ
์ด์ธ ๋ฅผ ์๋ฃํ๊ณ 20์ผ๋์ ๊ธฐ์ ๋ฉด์ ์คํฐ๋ ์ฑ๋ฆฐ์ง๋ฅผ ์ฐธ์ฌํ๋ค! ์ด๊ฑธ ๋งค์ผํ ์ ์์๊น? ํ๋๋ฐ ๋ ํ๋ค๋ณด๋ ๊ธ๋ฐฉ 20์ผ์ด ๋ค๊ฐ๋ค๋... ๋งค์ผ ๊ธฐ์ ๋ฉด์ ์ง๋ฌธ์ด ์ฌ๋ผ์ค๋ฉด ๋ต๋ณ ์ ๋ ์ฐ์ต์ ํ๋ฉด์ ๊ฐ๋
๋ ๋ค์ ๊ณต๋ถํ๋ ์๊ฐ์ ๊ฐ์ง ์ ์์ด์ ์ข์๋ค. ๊ทธ๋ฐ๋ฐ ์ญ์ ๊ธฐ์ ์ ๋ง๋ก ์ค๋ช
ํ๋ ค๋ ๋ ์ด๋ ค์ด๊ฒ.. ^^ ๋ ์ธ์ ๊ธฐ์ ์๋ ์ ์์ง..? 20์ผ ์ฑ๋ฆฐ์ง์์ ๋ฐ์๋ ์ง๋ฌธ๊ณผ ๋ด๊ฐ ์ ์ ๋ต๋ณ๋ค์ ๋ธ๋ก๊น
ํด๋ณธ๋ค. 1. ๋ฐฐ์ด, ๊ฐ์ฒด๋ฅผ const๋ก ์ ์ธํ๋๋ฐ ์์, ์์ฑ์ ์ถ๊ฐ๊ฐ๋ฅํ ์ด์ const ํค์๋๋ ์ฌ์ ์ธ๊ณผ ์ฌํ ๋น์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง const๋ก ์ ์ธํ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์, ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ฌํ ๋น์ ๊ฐ๋
์ด ์๋๋๋ค. ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ ์์ฒด๊ฐ ํ ๋น๋๋ ๊ฒ์ด ์๋๋ผ ์ฃผ์๊ฐ์ด ํ ๋น๋๊ธฐ ๋..
๋ฆฌํฉํ ๋ง ์ดํ ๋ฐ๋ชจ input์ด ๋น์ด์์๋ + ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๋ชจ๋ ํต๊ณผํ๊ธฐ ์ ์๋ ๋ก๊ทธ์ธ ๋ฒํผ์ด disabled ๋์ด ๋ฒํผ์ ๋๋ฅผ ์ ์๋ค. ๋ชจ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํต๊ณผํด์ผ์ง ๋ก๊ทธ์ธ ๋ฒํผ์ ๋ถ์ด ๋ค์ด์ค๊ณ ๋ก๊ทธ์ธ ๋ฒํผ์ ํด๋ฆญํด์ ์๋ฒ์ ๋ก๊ทธ์ธ ์์ฒญ์ ๋ณด๋ธ๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋ก๊ทธ์ธ, ํ์๊ฐ์
๊ธฐ๋ฅ ๊ตฌํ์ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ํ์ํ ๋ชจ๋ input์ฐฝ์ useState hook ์ํ๋ก ๊ด๋ฆฌํ ํ์์์ด, react-hook-form ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์
ํด์ form์ ์์ฑํ๋ค. react-hook-form์ ์ฌ์ฉํ๋ฉด ์๋ฒ๋ก ํต์ ์ด ๊ฐ๊ธฐ ์ด์ ์ ํด๋ผ์ด์ธํธ์์ ํด์ผ๋๋ ์ ํจ์ฑ๊ฒ์ฌ๋ฅผ ์ฝ๊ณ ๊ฐ๋จํ ์ฝ๋๋ก ์งค ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. react-hook-form ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณต์ ๋ฌธ์์ ํ์ดํ๋ Simple React forms ..
VSCode ํ
๋ง๋ฅผ ๋ง์์ ๋๋ ํ
๋ง๋ก ๋ณ๊ฒฝํ๋๋ฐ ์ด๋ด๋๊ฐ ์๋ค. ์ ์ด ์๊น๋ง ์ข ๋ฐ๊ฟ์ ์๋.. ๋ค๋ฅธ ๊ฑด ๋ค ๊ด์ฐฎ์๋ฐ ์ด ์๊น์ด ๋๋ฌด ๊ฑฐ์ฌ๋ ค ใ
ใ
์ด๋ฒ์ pc๋ฅผ ๋ฆฌ์
๋นํ๊ณ ? ํ๋ก์ ํธ ๋์ค์ ๊ธํ๋๋ก vscode์ ๋ด์ฅ๋์ด์๋ ํ
๋ง ์ค ๊ทธ๋๋ ์ ค ๋ง์ ๋๋๊ฑธ๋ก ๋ณ๊ฒฝํ๋๋ฐ.. ๋์ ํ.. ํ๋ก์ ํธ๋ฅผ ๊ณ์ํ๋๋ฐ ์ JSX ํ๊ทธ์ ๋นจ๊ฐ ๊ธ์จ๊ฐ ๋๋ฌด๋๋ฌด ๋์ด ์ํ ๋ค... ์ด๋ ๊ฒ ์ปดํฌ๋ํธ ํ๊ทธ๊ฐ ์ฃ๋ค ๋นจ๊ฐ์ ... ์ฝ.. ์.. ํ๋ฒ ๋ฐ๊ฟ๋ณด๊ฒ ์ต๋๋ค.. ํน์ ํ๊ทธ๋ง ๋ฐ๊พธ๋ ค๋ฉด ๋ญ๋ก ๊ฒ์ํด์ผ๋๋์ง ...? ๋ฐ๊พธ๋๋ฐ๋ ์กฐ์ฝค ์๊ฐ์ด ๊ฑธ๋ ธ์ด์ ์ ์ด๋ณด๋ ํฌ์คํ
๋จผ์ VSCode ์ค์ Settings ๋ก ๊ฐ์ editor: token ์ด๋ผ๊ณ ๊ฒ์ํ๋ค. ์ด์ฐฝ๊ธฐ์ ์ผ์ผ์ด settings ์์ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๋ค ์ฐพ๊ณ ๋ค๋
๋๋ฐ ๋๋ฌด ๋ฐฉ๋..
์ต์ข
๊ตฌํ ๋ชจ์ต JSX ์ฝ๋ ๋งํฌ์
๊ตฌ์กฐ ์ด๋ฒ ํ๋ก์ ํธ์์ ๋ง์ดํ์ด์ง๋ฅผ ๊ตฌํํ๋ฉด์ ์กฐ๊ธ ์ ๋ฅผ ๋จน์๋ ๋ถ๋ถ์ด ์๋๋ฐ, ์ธ๋ถ ๋ค๋น๊ฒ์ด์
๋ฐ์์ ๋ง์ดํ์ด์ง ์์ ๋ฉ๋ด ํญ์ผ๋ก ๊ตฌํํ๋ ๋ด ํ๋กํ, ๋ด ๋ ์ํผ, ๋ด ์ข์์, ๋ฐ์ ๋๊ธ ๋ค๊ฐ์ ํญ์ ๊ฐ๊ฐ ํ๋์ฉ ๋ค๋ฅธ ํ์ด์ง์ฒ๋ผ ์ ๊ทผํ ์ ์๊ฒ ๋ง๋๋ ๊ฒ์ด์๋ค. ์ฒ์์๋ useState๋ฅผ ์ด์ฉํด์ ์ํ๋ก ์ฒ์ currentTab์ 0์ผ๋ก ๋๊ณ , ํ์ฌ ๋๋ฌ์ง ํญ์ด currentTab์ด ๋๋๋ก ๊ตฌํํ๋๋ฐ, ์ด๋ ๊ฒ ํ๋๋ ๋ง์ดํ์ด์ง์ ๋ค์ด์ค๋ฉด ๋ฌด์กฐ๊ฑด ์ํ๊ฐ 0๋ฒ์งธ์ธ ๋ด ํ๋กํ๋ก ์์์ด๋๊ณ , ์ธ๋ถ์์ ๋ง์ดํ์ด์ง ๊ฐ๊ฐ์ ํญ์ ์ ๊ทผํ ์ ์๋ค๋ ๋ฌธ์ ์ ์ด ์์๋ค. ๊ธฐ์กด ์ฝ๋ const [currentTab, setCurrentTab] = useState(0); {menuArr.ma..