๋ฐ˜์‘ํ˜•

frontend 11

[Html] select element ์—์„œ dropdown icon ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. select element ์—์„œ dropdown icon ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :) How to solve problem Option 1 Option 2 Option 3 /* Hide the default dropdown arrow */ .custom-select { appearance: none; /* For Firefox */ -webkit-appearance: none; /* For Chrome, Safari, Opera */ -moz-appearance: none; /* For Firefox */ background-image: url('custom-dropdown-icon.png'); /* Custom arrow icon */ background-pos..

Programming/Html 2024.04.23

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

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/JS] ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ

Problem Description ์ค‘์•™๊ฐ’์€ ์–ด๋–ค ์ฃผ์–ด์ง„ ๊ฐ’๋“ค์„ ํฌ๊ธฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1, 2, 7, 10, 11์˜ ์ค‘์•™๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜ ๋ฐฐ์—ด array๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ค‘์•™๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”. Restrictions. array์˜ ๊ธธ์ด๋Š” ํ™€์ˆ˜์ž…๋‹ˆ๋‹ค. 0 < array์˜ ๊ธธ์ด < 100 -1,000

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/JS] ์™ธ๊ณ„ํ–‰์„ฑ์˜ ๋‚˜์ด

Problem Description. ์šฐ์ฃผ์—ฌํ–‰์„ ํ•˜๋˜ ๋จธ์“ฑ์ด๋Š” ์—”์ง„ ๊ณ ์žฅ์œผ๋กœ PROGRAMMERS-962 ํ–‰์„ฑ์— ๋ถˆ์‹œ์ฐฉํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ์ž…๊ตญ์‹ฌ์‚ฌ์—์„œ ๋‚˜์ด๋ฅผ ๋งํ•ด์•ผ ํ•˜๋Š”๋ฐ, PROGRAMMERS-962 ํ–‰์„ฑ์—์„œ๋Š” ๋‚˜์ด๋ฅผ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. a๋Š” 0, b๋Š” 1, c๋Š” 2, ..., j๋Š” 9์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 23์‚ด์€ cd, 51์‚ด์€ fb๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ด age๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ PROGRAMMER-962์‹ ๋‚˜์ด๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. Restrictions. age๋Š” ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค. age ≤ 1,000 PROGRAMMERS-962 ํ–‰์„ฑ์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Input/Output Example. age result 23 "cd" 51 "fb" 100..

[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

[TypeScript] ์ œ๋„ค๋ฆญ ์ปดํฌ๋„ŒํŠธ (generic component) ์ •์˜ ๋ฐ ์‚ฌ์šฉ๋ฐฉ๋ฒ•

์ด ๊ธ€์€ ์›๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. Definition TypeScript Generics๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. generics๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์žฅ๊ธฐ์ ์œผ๋กœ ํ™•์žฅ๊ฐ€๋Šฅํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์œ ์—ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ด์ค๋‹ˆ๋‹ค. Example # Props interface Props { renderItem: (item: T) => React.ReactNode; keyExtractor: (item: T) => string; data: T[]; } data: ์ œ๋„ค๋ฆญ ํƒ€์ž… T๋ฅผ ๋ฐ›์„ ๋ฐฐ์—ด ์š”์†Œ renderItem: ํƒ€์ž… T์˜ react ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ keyExtractor: ํ‚ค๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜ # Component ์ •์˜ const GenericList = ({ data,..

[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

[Chart.js] line ์ฐจํŠธ border line ๊ตต๊ฒŒ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Chart.js์—์„œ line ์ฐจํŠธ border line ๊ตต๊ฒŒ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. How to do const options: ChartOptions = { // other options elements: { line: { borderWidth: 2, }, }, // other options }; borderWidth ์ˆซ์ž๋ฅผ ํฌ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜๋ก border line ๊ตต๊ธฐ๊ฐ€ ๊ตต์–ด์ง‘๋‹ˆ๋‹ค :)

Library 2023.08.11

[๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive] 16์žฅ ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ(property attribute)๋ž€?

16.1 ๋‚ด๋ถ€ ์Šฌ๋กฏ๊ณผ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€ ์Šฌ๋กฏ (internal slot)๊ณผ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ (internal method)๋Š” JS ์—”์ง„์˜ ๊ตฌํ˜„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ECMAScript ์‚ฌ์–‘์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜์‚ฌ ํ”„๋กœํผํ‹ฐ pseudo property์™€ ์˜์‚ฌ ๋ฉ”์„œ๋“œ pseudo method ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๋Š” [[Prototype]] ์ด๋ผ๋Š” ๋‚ด๋ถ€ ์Šฌ๋กฏ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์Šฌ๋กฏ์€ JS ์—”์ง„์˜ ๋‚ด๋ถ€ ๋กœ์ง์ด๋ฏ€๋กœ ์›์น™์ ์œผ๋กœ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์ง€๋งŒ __proto__๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 16.2 ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์™€ ํ”„๋กœํผํ‹ฐ ๋””์Šคํฌ๋ฆฝํ„ฐ ๊ฐ์ฒด Js ์—”์ง„์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ”„๋กœํผํ‹ฐ์˜ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ž๋™ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ์˜ ์ƒํƒœ๋ž€ ๊ฐ’ (value), ๊ฐ’์˜ ๊ฐฑ์‹  ๊ฐ€๋Šฅ ์—ฌ๋ถ€ (writable), ์—ด๊ฑฐ..

๋ฐ˜์‘ํ˜•