[React] ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰ ์ตœ์ ํ™”
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 27. 22:53

Today, What I learned? ๋ผ์ดํŠธํ•˜์šฐ์Šค์˜ ์ง€ํ‘œ๋ฅผ ๋ณด๊ณ  ํ”„๋กœํ•„ ์ด๋ฏธ์ง€์˜ ํ™•์žฅ์ž๋ฅผ webp๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด์„œ.. ๋‹ค๋ฅธ ์ด๋ฏธ์ง€ ํ™•์žฅ์ž๋ฅผ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์—์„œ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ํ™•์žฅ์ž๋„ ํ™”๋ฉด๊ณต์œ ๋ฅผ ํ†ตํ•ด ํŒ€์› ๋ถ„์ด ๋ณ€๊ฒฝํ•ด ์ฃผ์…จ์ง€๋งŒ, ๊ทธ ๊ณผ์ •์—์„œ ๋‚ด๊ฐ€ ๋˜ ์‹ค์ˆ˜ํ•œ(!) ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค ^^ใ…Ž ์šฐ์„  ํ˜„์žฌ ๋ผ์ดํŠธ ํ•˜์šฐ์Šค๋Š” ์ด๋ ‡๋‹ค. ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ฆˆ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด react-image-file-resizer ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ™•์žฅ์ž๋ฅผ jpg, png ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ webp๋„ ํ•จ๊ป˜ ์ œ๊ณตํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉ๋˜์–ด ์žˆ๋˜ ๋ฆฌ์‚ฌ์ด์ฆˆ ํฌ๋งท์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. const resizeFile = (file: File) => new Promi..

[React] React.memo, useMemo, useCallback
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 24. 20:11

Today, What I learned? ํ”„๋ก ํŠธ์—์„œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ธ๊ฐ€?๋ฅผ ์š”์ƒˆ ๊ณ ๋ฏผํ•˜๊ณ  ์ฐพ์•„๋ณด๊ณ , ์—ฌ๋Ÿฌ ๊ธ€๋“ค์„ ์ฝ์–ด๋ณด๊ณ  ์žˆ๋‹ค. ๊ทธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง ์ค„์ด๊ธฐ!.. ๋ Œ๋”๋ง์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ memoization์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. memoization memoization์€ ๋ฆฌ์•กํŠธ์—๋งŒ ํ•ด๋‹น๋˜๋Š” ๊ธฐ์ˆ ์€ ์•„๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ๋™์ผํ•œ ๊ณ„์‚ฐ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ๋•Œ, ์ด์ „์˜ ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด ๋†“๊ณ  ์‚ฌ์šฉํ•˜์—ฌ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ๋ฐ˜๋ณต ์ž‘์—… ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์„ ๋ฉ”๋ชจ๋ฅผ ํ•ด๋†“๊ณ  ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š” ๋Š๋‚Œ? ๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ฆฌ์•กํŠธ์—์„œ์˜ memoization ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€. React.memo, useMemo, useCallba..

[React] useEffect์˜ ์‹คํ–‰ ์‹œ์ 
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 23. 10:49

Today, What I learned? ์ž‘์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋‹ค๊ฐ€ null๊ฐ’์ด ํฌํ•จ๋˜์–ด์„œ ์›๋ž˜ ๋˜๋˜ ๊ธฐ๋Šฅ์ด ์•ˆ ๋˜๋Š”(!) ์ผ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ๋ฐœ๊ฒฌํ•˜์‹  ๋ถ„์ด ๋ฐ”๋กœ ํ•ด๊ฒฐํ•ด ์ฃผ์…จ์ง€๋งŒ, ๋งˆ์นจ ๊ทธ ๋ถ€๋ถ„์ด useEffect๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ๋ถ€๋ถ„์ด๊ณ .. ๋‚ด๊ฐ€ useEffect์˜ ์‹คํ–‰ ์‹œ์ ์— ๋Œ€ํ•ด์„œ ์ž˜๋ชป ์•Œ๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„ ์ •๋ฆฌํ•œ๋‹ค! useEffect์˜ ์‹คํ–‰ ์ˆœ์„œ ๋‚˜๋Š” ๊ธฐ์กด์— useEffect๊ฐ€ ์ œ์ผ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ, (์ •ํ™•ํžˆ ์™œ์˜€๋Š”์ง€๋Š”?..๐Ÿค”) useEffect ๊ฐ™์€ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋Š” jsx๊ฐ€ ๋“ค์–ด์žˆ๋Š” return๋ฌธ์ด ๋๋‚˜๊ณ  ์‹คํ–‰๋œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ˜์†”์„ ์ถ”๊ฐ€ํ•ด์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋‹ค์‹œ ์•Œ๊ฒŒ ๋œ ๊ฒƒ๊ณผ ๊ฐ™์ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋˜๋Š” return๋ฌธ์ด ๋จผ์ € ์‹คํ–‰๋˜๊ณ  useEffect์˜ ์ฝ˜์†”์ด ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. co..

๋งˆ์ดํŽ˜์ด์ง€ ๋ฒ„๊ทธ, ์ •๋ณด ๋ณ€๊ฒฝ ํ™•์ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๐Ÿค”
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 21. 22:15

Today, What I learned ํŠœํ„ฐ๋‹˜์˜ ์ƒ์„ธํ•œ!.. ๊ฑฐ์˜ ์ „์ˆ˜ ํ…Œ์ŠคํŠธ ๊ธ‰์˜ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•œ ๋ฒ„๊ทธ.. ๋ฒ„๊ทธ ํ•ด๊ฒฐ ๊ณผ์ •์„ ๊ธฐ๋กํ•ด ๋ณธ๋‹ค. ํ˜„์žฌ ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๋งˆ์ดํŽ˜์ด์ง€์—๋Š” ์ด๋Ÿฐ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค. ๊ธฐ์กด ์œ ์ € ์ •๋ณด์™€ ๋‹ฌ๋ผ์กŒ์„ ๋•Œ๋งŒ ๋ฒ„ํŠผ์„ ํ™œ์„ฑํ™”์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ๊ทธ ๋ถ€๋ถ„์„ ๋นผ๋จน์–ด์„œ.. ์ˆ˜์ •ํ–ˆ๋Š๋ƒ์˜ ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ๊ณ„์†ํ•ด์„œ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์˜€๋‹ค!!... ((OMG)) ์ด๋Ÿฐ ์˜๋ฏธ ์—†๋Š” ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋ฅผ ๋ง‰๋Š” ์ผ์ด์•ผ๋ง๋กœ ํ”„๋ก ํŠธ์—”๋“œ๋กœ์„œ ํ•ด์•ผ ํ•  ์ผ... ๐Ÿ˜‡ State ์ถ”๊ฐ€ํ•˜๊ธฐ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ ์ €์žฅ๋œ ์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ state๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ๋‹ค. const [defaultUserInfo, setDefaultUserInfo] = useState(defaultInfo); ์ข€ ์—ฌ..

[React] React.lazy ์™€ Suspense
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 20. 23:31

Today, What I learned? ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋˜์–ด ์žˆ๋Š” ์ฝ”๋“œ๋ถ„ํ• ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. ๋‚ด๊ฐ€ ์ ์šฉํ•œ ๋ถ€๋ถ„์ด ์•„๋‹ˆ์—ˆ๊ณ , ๋‚˜๋„ ์ฒ˜์Œ ์ ‘ํ•œ ๊ฒƒ์ด๋ผ ์•„์ง ์ƒ์†Œํ•œ ๋ถ€๋ถ„!... ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ์—๋„ ์ด ๋ถ€๋ถ„์ด ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค. https://ko.reactjs.org/docs/code-splitting.html ์ฝ”๋“œ ๋ถ„ํ•  – React A JavaScript library for building user interfaces ko.reactjs.org ์ฝ”๋“œ ๋ถ„ํ• ์€ ์•ฑ์„ ์ง€์—ฐ๋กœ๋”ฉ(lazy loading) ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ๊ทธ๋•Œ๊ทธ๋•Œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๋กœ๋”ฉ์— ํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ์ค„์–ด๋“ค๊ณ , ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋งŽ์€ ๋„์›€์ด ๋œ๋‹ค. React.lazy React.lazy ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ..

[React] ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ ํ•„ํ„ฐ๋ง ์—ฌ์ •(2) - 3์ค‘ ์ค‘์ฒฉ ๊ฐ์ฒด
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 17. 21:53

Today, What I learned? ์ง€๋‚œ ๊ธ€์ด ๊ธธ์–ด์ ธ์„œ ์ด์–ด์„œ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ ํ•„ํ„ฐ๋ง ์—ฌ์ •~ ์˜ค๋Š˜์€ 3์ค‘ ์ค‘์ฒฉ ๊ฐ์ฒด์˜ ๊ฐ’์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ๊ธฐ๋กํ•œ๋‹ค. ์—ฌํƒœ๊ป.. ์ค‘์ฒฉ ๊ฐ์ฒด๊นŒ์ง„ ๊ฒช์–ด๋ดค์ง€๋งŒ 3์ค‘์œผ๋กœ ์ค‘์ฒฉ๋œ.. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ค‘์ฒฉ์˜ ์ค‘์ฒฉ์˜ ์ค‘์ฒฉ ๊ฐ์ฒด๋Š” ์ฒ˜์Œ์ด๋ผ ์‚ฝ์งˆ์„ ์ข€ ํ–ˆ๋‹ค. ๊ทธ๋ž˜๋„ Promise ๋ฐฐ์—ด๋ณด๋‹จ ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•จ ใ…Ž ์ผ๋‹จ ์ตœ์ข…๋ณธ์€ ์ด๋ ‡๋‹ค. ๊ธฐ์œ ๋งˆ์Œ์œผ๋กœ gif๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค ^^.. ์ด ๋…€์„์€ 3 ์ค‘์ฒฉ ๊ฐ์ฒด ์ง€์›ํ•œ, ์ฐธ์—ฌํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ์•„์ด๋””๋กœ ๋ฌธ์„œ(๊ฐ์ฒด)๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ , ๊ทธ ์•ˆ ๊ฐ์ฒด์˜ recruited ๋ผ๋Š” ํ‚ค๊ฐ’์„ ํ†ตํ•ด ํŒ๋ณ„๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ true/false์— ๋”ฐ๋ผ ๊ฐˆ๋ฆฐ๋‹ค. appliedProjects๋ผ๋Š” ๊ฐ์ฒด ์•ˆ์˜ ๊ฐ ๋ฌธ์„œ ์•„์ด๋””๋ผ๋Š” ๊ฐ์ฒด ์•ˆ์˜ recruite..

[React] ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ ํ•„ํ„ฐ๋ง ์—ฌ์ •(1) - Promise.all
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 16. 22:25

Today, What I learned? ๋งˆ์ดํŽ˜์ด์ง€์˜ ํ•ด๋‹น ์œ ์ € ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•œ ๊ธด ์—ฌ์ •.... ๋‚˜๋ฅผ ๋น™๊ธ€ ๋Œ์•„๋ฒ„๋ฆฌ๊ฒŒ ๋งŒ๋“ค์—ˆ๋˜ Promise์™€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ Promise.all์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. ๋ฐœ๋‹จ, Promise ๋ฐฐ์—ด ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ์กฐ๊ธˆ ๋ณต์žกํ•œ ํŽธ์ธ๋ฐ.. ๋งˆ์ดํŽ˜์ด์ง€์—์„œ์˜ ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ๋Š” ํ™œ์„ฑํ™”๋œ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋”ฐ๋ผ์„œ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค์„ ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ฐธ์—ฌํ•œ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ง€์›ํ•œ ํ”„๋กœ์ ํŠธ๋งŒ ๋ณด์—ฌ์ฃผ๋Š” ์‹.. ๋ญ ์—ฌ๊ธฐ๊นŒ์ง€์•ผ ๋ณดํ†ต์˜ ํ•„ํ„ฐ๋ง์ด์ง€ ์•Š๋‚˜? ์‹ถ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ป์–ด์˜จ ๊ฐ๊ฐ์˜ ๋ฌธ์„œ์•„์ด๋”” ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ๊ฐ์˜ ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ๋‹ค์‹œ ์กฐํšŒํ•ด์•ผ ํ•˜๋Š”.. ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ์™œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์ด๋Ÿฐ๊ฐ€์š”?๋ผ๊ณ  ๋ฌป๋Š”๋‹ค๋ฉด ์šฐ๋ฆฌ ํŒ€์€ ๋ชจ๋‘ ํ”„..

[React] ์ปค์Šคํ…€ ๋ชจ๋‹ฌ ๋งŒ๋“ค๊ธฐ
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 15. 23:30

Today, What I learned? ํ”„๋กœ์ ํŠธ์˜ ๊ณต์šฉ ๋ชจ๋‹ฌ์„ ํ™œ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๐Ÿ‘€ ๊ทธ๋ž˜๋„ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ˜•ํƒœ๋ผ ๋˜ ๋‹ค๋ฅธ ์ปค์Šคํ…€ ๋ชจ๋‹ฌ์„ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋”๋ถˆ์–ด ๊ณต์šฉ ๋ชจ๋‹ฌ์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„์ง€?? ์ง€๋‚œ ํ”„๋กœ์ ํŠธ์—์„œ ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฉ‹์ง€๊ฒŒ ๊ตฌํ˜„ํ•ด ์ค€ ํŒ€์› ๋ถ„์ด ์žˆ์–ด์„œ!.. ๋งŽ์ด ๋ฐฐ์› ๋‹ค ๐Ÿ˜‡ ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๋ชจ๋‹ฌ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. useModal hook ๋ชจ๋‹ฌ์„ ๊ณตํ†ต์ ์œผ๋กœ ์“ฐ๋ ค๋ฉด ์ผ๋‹จ ๋ชจ๋‹ฌ์ด ์—ด๋ฆฌ๊ณ  ๋‹ซํžˆ๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ๋ณดํ†ต ์ปค์Šคํ…€ ํ›…์œผ๋กœ ๋ชจ๋‹ฌ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜ ๊ฐ™์€ ๊ฒƒ์„ ๋งŒ๋“ค์–ด์ฃผ์–ด ๊ด€๋ฆฌํ•œ๋‹ค. ๋˜ ์—ฌ๊ธฐ์— onClick ์ด๋ฒคํŠธ๋‚˜ onChange ์ด๋ฒคํŠธ์ฒ˜๋Ÿผ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค. const useModal = (initial..

[React] input type = 'radio', 'checkbox'์˜ ์ƒํƒœ๊ด€๋ฆฌ
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2023. 2. 14. 11:31

Today, What I learned? ๋ผ๋””์˜ค ๋ฒ„ํŠผ๊ณผ ์ฒดํฌ๋ฐ•์Šค์˜ ์ƒํƒœ ์œ ์ง€๋ฅผ ์œ„ํ•œ ๊ณ ๋ฏผ์˜ ๊ณผ์ •์„ ๊ธฐ๋กํ•ด ๋ณธ๋‹ค!.. ๋‹จ์ˆœํžˆ ๊ฐ’์„ ๋„ฃ์–ด state๋ฅผ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ด์ „ ์ƒํƒœ ์Šค๋ƒ…์ƒท์„ ์ด์šฉํ•ด์„œ state๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋กœ์ง์„ ์จ๋ณด๊ฒŒ ๋˜์–ด ์ข‹์•˜๋‹ค. ์ฒซ ๋ฒˆ์งธ ์‹œ๋„ ๋ผ๋””์˜ค ๋ฒ„ํŠผ const [isJuniorChecked, setIsJuniorChecked] = useState( user?.isJunior, ); const [checkedPositions, setCheckedPositions] = useState( user?.positions, ); ๋ผ๋””์˜ค ๋ฒ„ํŠผ์— ๋“ค์–ด๊ฐˆ onChange ์ด๋ฒคํŠธ. const handleCheckedRadioChange = useCallback( (e: React.ChangeE..

firebase CORS ์—๋Ÿฌ Response to preflight request doesn't pass access control check ~
๐Ÿ“” Studying/๐Ÿšง Errors 2023. 2. 13. 21:31

์–ด๋–ค ์—๋Ÿฌ? ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์Šคํ† ๋ฆฌ์ง€์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘ CORS ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค. Access to XMLHttpRequest at '~~' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. ์›์ธ ํŒŒ์•… ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  (Cross-origin resource sharing)๊ฐ€ ํ—ˆ์šฉ์ด ๋˜์–ด์žˆ์ง€ ์•Š์•„์„œ ์ƒ๊ธด ์˜ค๋ฅ˜!.. CORS ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ผ์ด์–ธํŠธ ..