๋ฐ˜์‘ํ˜•

Framework 86

[React] window scroll event handler ์ด๋ฒคํŠธ๊ฐ€ ์•ˆ๋จนํž ๋•Œ, scrollY always 0

Intro์•ˆ๋…•ํ•˜์„ธ์š”. React์—์„œ window.scroll ์ด๋ฒคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋ฆฌ window.scrollY ๊ฐ’์„ ๊ตฌํ•ด๋„ 0์œผ๋กœ ๋‚˜์˜ค๋”๋ผ๊ณ ์š”.   ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. // stateconst [scrollTop, setScrollTop] = useState(0), headerRef = useRef(null), headerHeight = headerRef?.current?.clientHeight ?? 0, // useEffectuseEffect(() => { const handleScroll = () => { setScrollTop(window.scrollY); }; handleScroll(); window.ad..

Framework/React 2024.05.25

[React] useForm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€?

Intro์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” React useForm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. React mui ํ…œํ”Œ๋ฆฟ์„ ์‚ดํŽด๋ณด๋˜ ๋„์ค‘ useForm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์„ ์ฒ˜์Œ ๋ฐœ๊ฒฌํ–ˆ๊ฑฐ๋“ ์š”! :)  UseForm?useForm์€ React์—์„œ Form ๊ด€๋ฆฌ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. React Hooks๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. useForm์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒํƒœ ๊ด€๋ฆฌ์™€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ์˜ ๋ณต์žกํ•œ ํผ ๊ด€๋ จ ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ์ž๋“ค์ด ํผ์„ ๋” ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. UseForm's functionForm ์ƒํƒœ ๊ด€๋ฆฌ : useForm ํ›…์„ ์‚ฌ์šฉํ•˜์—ฌ ํผ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ..

Framework/React 2024.02.29

[React] Input elements should have autocomplete attributes (suggested: "current-password") Error ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro์•ˆ๋…•ํ•˜์„ธ์š”. React์—์„œ MUI์˜ TextField๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๋„์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.   Input elements should have autocomplete attributes (suggested: "current-password")   How to solve problemํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” autocomplete ์†์„ฑ์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•„์„œ์ž…๋‹ˆ๋‹ค.  autoComplete ์†์„ฑ์ด๋ž€  ํผ ํ•„๋“œ์— ๋ธŒ๋ผ์šฐ์ €์˜ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ข…์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ , ์œ ์‚ฌํ•œ ์ž…๋ ฅ ํ•„๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ ์ด๋ฅผ ์ž๋™์œผ๋กœ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ์ž…๋ ฅํ•œ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋‚˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๊ธฐ์–ตํ•˜์—ฌ ๋‹ค์Œ์— ํ•ด๋‹น ํ•„๋“œ์— ๋‹ค์‹œ ์ž…๋ ฅํ• ..

Framework/React 2024.02.16

[Material UI] Dialog ์ปดํฌ๋„ŒํŠธ ํ™”์‚ดํ‘œ ํ‚ค (PgUp, PgDn) Internal scroll ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” MUI Dialog Component ์—์„œ ํ™”์‚ดํ‘œ ํ‚ค (PgUp, PgDn) Internal scroll ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Mui Dialog Component Open full-screen dialog Sound save  MUI Full Dialog ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ ํ™œ์šฉ ์‹œ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅํ‚ค ์Šคํฌ๋กค์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PgUp, Pg..

Framework/React 2024.01.24

[React] React Hook "useSelector" cannot be called inside a callback ์—๋Ÿฌ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. react hook useSelector ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๋„์ค‘ ์•„๋ž˜์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. React Hook "useSelector" cannot be called inside a callback function YourComponent() { useEffect(() => { useSelector((state: RootState) => state.code[SOME_DATA]) }, []) } Why? react hook์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ค‘์š”ํ•œ 2๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1๏ธโƒฃ Only Call Hooks at the Top Level ๋ฃจํ”„ ์กฐ๊ฑด ๋˜๋Š” ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜ ๋‚ด์—์„œ Hooks๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ React ํ•จ์ˆ˜์˜ Top Level์—์„œ Hooks๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์„..

Framework/React 2023.09.18

[Angular] DeprecationWarning: Access to process.binding('http_parser') is deprecated ์—๋Ÿฌ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” DeprecationWarning: Access to process.binding('http_parser') is deprecated ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. My Case ์ฝ”๋“œ ํ™•์ธํ•  ์ผ์ด ์ƒ๊ฒจ ๊ฐ„๋งŒ์— ์•ต๊ทค๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰์‹œํ‚ค์ž๋งˆ์ž ์—๋Ÿฌ ๋ฐœ์ƒ.. ๐Ÿคง DeprecationWarning: Access to process.binding('http_parser') is deprecated How to solve the problem ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ ๋…ธ๋“œ ๋ฒ„์ „์„ ๋ฐ”๊ฟ”๋ณด๋ฉด ์ž‘๋™ํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ์–ด์„œ ๋…ธ๋“œ ๋ฒ„์ „์„ ๋‚ด๋ ค๋ดค๋”๋‹ˆ ์•ต๊ทค๋Ÿฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž˜ ์‹คํ–‰๋˜๋”๋ผ๊ณ ์š” ๐Ÿค˜ ํ˜น์‹œ ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ๋ณด์‹ ๋‹ค๋ฉด ๋…ธ๋“œ ๋ฒ„์ „์„ ๋ฐ”๊ฟ”๋ณด์„ธ์š” :D https://s..

Framework/Angular 2023.08.24

[React.js] Warning: validateDOMNesting(...): <tr> cannot appear as a child of <table> ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๋„์ค‘ Warning: validateDOMNesting(...): cannot appear as a child of ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. How to solve the problem์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ tbody ํƒœ๊ทธ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ์ฝ”๋“œ๋กœ ์ˆ˜์ •ํ•œ ๊ฒฐ๊ณผ ์—๋Ÿฌ๊ฐ€ ๋”์ด์ƒ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Framework/React 2023.08.18

[React] react + typescript + Chart.js Multi-Axis ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์•ž์„  ํฌ์ŠคํŒ…์—์„œ Multi type chart๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋Š”๋ฐ์š”, ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Chart.js์—์„œ Multi-Axis ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Multi-Axis ์€ ๋ฐ์ดํ„ฐ์˜ ๋‹จ์œ„ ์ฐจ์ด๊ฐ€ ์ปค์„œ ํ•œ๊บผ๋ฒˆ์— ํ‘œํ˜„ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. How to do ์ œ ๊ฒฝ์šฐ series1, series2 ๋‘ ๋ฐ์ดํ„ฐ์— ์ƒ์‘๋˜๋Š” y์ถ•์„ ์˜ค๋ฅธ์ชฝ๊ณผ ์™ผ์ชฝ์— ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์ถ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— yAxisID ์†์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ a, b ๋‘๊ฐœ๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ options์—์„œ ํ•ด๋‹น yAxisID๋ฅผ ์‚ฌ์šฉํ•ด position์„ right, left๋กœ ์„ค์ •ํ•ด์คฌ์Šต๋‹ˆ๋‹ค. const series1: number[] = [] const series2: number[]..

Framework/React 2023.07.25

[React] react + typescript ์—์„œ multitype ๋ฉ€ํ‹ฐํƒ€์ž… Chart.js ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” react + typescript ์—์„œ Chart.js ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. How to do ์ œ ์ผ€์ด์Šค์˜ ๊ฒฝ์šฐ ๋ง‰๋Œ€(bar) ๊ทธ๋ž˜ํ”„์™€ ์„ (line) ๊ทธ๋ž˜ํ”„๋ฅผ ํ•จ๊ป˜ ๊ทธ๋ ค์ฃผ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋จผ์ € MutiTypeChart ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. # MutiTypeChart Component props๋กœ data, height, options ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํƒ€์ž… ์ฐจํŠธ๋ฅผ ์œ„ํ•ด์„œ๋Š” Chart Component ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. import React from 'react' import { BarController, BarElement, CategoryScale, Chart as ChartJS, ChartData, ChartOptions,..

Framework/React 2023.07.17

[Material UI] Typography variant ์ปค์Šคํ…€ ํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” MUI Typography Component ์—์„œ variant ์†์„ฑ์„ ์ปค์Šคํ…€ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. MUI Typography variant Typography ์˜ ๊ธฐ๋ณธ variant ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. h1, h2, h3, h4, h5, h6, subtitle1, subtitle2, body1, body2 ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์™ธ์—๋„ ์ง์ ‘ ์ปค์Šคํ…€ํ•˜์—ฌ variant๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. const theme = createTheme({ components: { MuiTypography: { defaultProps: { variantMapping: { h1: 'h2', h2: 'h2', h3: 'h2', h4: 'h2', h5: 'h2', ..

Framework/React 2023.07.10
๋ฐ˜์‘ํ˜•