winterlood
@winterlood
Students
36,518
Reviews
2,464
Course Rating
4.9
์น ํ๋ก ํธ์๋ ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน์ด ๋ณผ๊น์?!
์๋ ํ์ธ์ ๐โโ
์ ๋ ๋ฌด์์ด๋ ์ฝ๊ณ ์ฌ๋ฏธ์๊ฒ ์ค๋ช ํ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ๋ฏฟ๋ ์ฌ๋์ด์
์ธ์์์ ๊ฐ์ฅ ๋ฐ๋ปํ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ ์ฌ๋์ ๋๋ค.
๐ ๋์
๐น ๊ฐ์
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ ํ์ ์คํฌ๋ฆฝํธ
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ ๋ฆฌ์กํธ
Courses
Reviews
- Bite-sized Next.js(v15)
- One Bite Challenge Season 7 - JavaScript
- Bite-sized TypeScript
- Bite-sized Real-world Project - SNS Edition
Posts
Q&A
setAvatarImage(null) ๋ถ๋ถ ์ง๋ฌธ
์๋ ํ์ธ์ ์ฐ๋ ๊ธฐ๋ ์ด์ ํ์ ๋๋ค.AI ์ธํด์ ๋ต๋ณ๋๋ก setAvatarImage(null);๋ ํ๋กํ ์์ ๋ชจ๋ฌ์ด ์ด๋ฆด ๋ ์ฌ์ฉ์ ํ๋กํ์ ์๋์ ์ด๊ธฐ ์ํ๋ก ์ค์ ํ๋ ค๋ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.๊ตฌ์ฒด์ ์ธ ๋์๊ณผ ํจ๊ป ์ฝ๋๋ฅผ ์ดํดํ์๋ ค๋ฉด ํด๋น useEffect๋ฅผ ์ฃผ์์ฒ๋ฆฌํ ์ํ๋ก ์๋์ ๋์์ ์ํํด๋ณด์๊ธธ ๊ถ์ฅ๋๋ฆฝ๋๋ค.ํ๋กํ ์ด๋ฏธ์ง ๋ณ๊ฒฝ์์ ํ๊ธฐ ๋ฒํผ์ ๋๋ฅด์ง ์๊ณ ๋ชจ๋ฌ ์ข ๋ฃ๋ชจ๋ฌ ๋ค์ ์ด๊ธฐ์ด๋ useEffect๊ฐ ์ฃผ์์ฒ๋ฆฌ ๋์ด ์๋ค๋ฉด avatarImage์ ๊ฐ์ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ ์ ์ ์ ๋ณด๋ก ์ด๊ธฐํ ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํ๋กํ ์ด๋ฏธ์ง๋์๋ ์์ ๋ณ๊ฒฝํ ์ด๋ฏธ์ง๊ฐ ๋ํ๋๊ฒ ๋ ๊ฒ ์ ๋๋ค.
- 0
- 2
- 21
Q&A
props ์ง๋ฌธ
์๋ ํ์ธ์ gmldnjs0402๋ ์ด์ ํ์ ๋๋ค.์๋์ AI ์ธํด์ด ์ ์ ํ ์ค๋ช ์ ํด ์ฃผ์๋ค์! ํ์ธํด๋ณด์๊ณ ์ด๋ ค์ด ๋ถ๋ถ์ด ์์ผ์๋ฉด ์ถ๊ฐ ์ง๋ฌธ ๋ถํ๋๋ฆฝ๋๋ค.์ฐธ๊ณ ๋ก ์ด๋ฒ ์ง๋ฌธ์์ ๋ค๋ฃจ๊ณ ์๋ ๋ด์ฉ์ React์ ์ปดํฌ๋ํธ ๊ตฌ์กฐ์ ํ ์ฌ์ฉ ํจํด์ ๊ดํ React.js ๊ธฐ์ด ๊ฐ๋ ์ ํด๋นํฉ๋๋ค. ์ด ๋ถ๋ถ์ ์ ๊ฐ์ ใํ์ ๋ฆฌ์กํธใ์์ ๋ค๋ฃจ๊ณ ์๋ ์ฃผ์ ์ด๊ธฐ๋ ํฉ๋๋ค. ์๋ ๋งํฌ์ ํด๋น ๋ด์ฉ์ ์ ๋ฆฌํด ๋ ์๋ฃ๊ฐ ์์ผ๋ ํจ๊ป ์ฐธ๊ณ ํด ๋ณด์ ๋ ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.https://reactjs.winterlood.com/c89cba30-39b6-4094-85f6-f87a16842028์ฝ์ด๋ณด์๊ณ ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด ์๊ธฐ๋ฉด ์ธ์ ๋ ์ง ์ง๋ฌธ ์ฃผ์ธ์ ๐
- 0
- 2
- 25
Q&A
๋ถ๋ชจ์์ ํ ํธ์ถํ์ฌ ์์์๊ฒ prop์ผ๋ก ๋ด๋ ค์ฃผ๊ธฐ vs ์์์์ ํ ํธ์ถ ์ ์๋์ ์ด๋ป๊ฒ ์๊ฐํ์๋์ง ๊ถ๊ธํฉ๋๋ค
์๋ ํ์ธ์ ์ต์ฑ์ค๋ ์ด์ ํ์ ๋๋ค.์ฐ์ ๊ฐ์์์ ์์ฑํ๋ useDeletePost๋ useEditPost ์ ๋์ ํ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋คํ๊ฒ ์ฌ์ฉํ ๋งํผ ์ ์๋ฏธํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ์ง๋ ์์ต๋๋ค. ๋ ํ ์ ํธ์ถ์ ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ ๋ ๊ฒฝ์ฐ ํจ๊ป ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ธก๋ฉด์์๋ ํฌ๊ฒ ๊ฑฑ์ ํ์ค ํ์๋ ์์ด๋ณด์ ๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก Child ์ปดํฌ๋ํธ์์ ์ง์ ํ ์ ํธ์ถํ๋๊ฒ ๋ ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค
- 0
- 1
- 30
Q&A
Redux DevTools ์์ anonymous๊ฐ ๋ ๋ฒ์ฉ ์ฐํ์
์๋ ํ์ธ์ ์ด์ ํ์ ๋๋ค.์๋ง ๋์ ํ๋ฅ ๋ก main.tsx ํ์ผ์ StrictMode๋ฅผ ์ ๊ฑฐํ์์ง ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ์๋๊น ์ถ์ต๋๋ค. ์๋ AI ์ธํด์ด ๋ต๋ณํด์ค๋๋ก React์ StrictMode๊ฐ ํ์ฑํ๋์ด ์๋ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๊ฐ ๋ ๋ฒ์ฉ ๋ ๋๋ง๋ ์ ์์ต๋๋ค. ํ๋ฒ ํ์ธํด๋ณด์ ๋ค ํ์ ๋ถํ๋๋ฆฝ๋๋ค.
- 0
- 2
- 33
Q&A
ํ์ผ๋ช ์ง๋ฌธ
์๋ ํ์ธ์ ๊น์ฑ๊ด๋ ์ด์ ํ์ ๋๋ค.๋ฆฌ์กํธ ํ์ผ๋ช ์ ๋๋ฌธ์๋ก ์ฐ๋๊ฒ ์๋, ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ๋ ํจ์์ ์ด๋ฆ์ ๋๋ฌธ์๋ก ์์ํด์ผ ๋ฉ๋๋ค. ํ์ผ๋ช ์ ์๋ฌด๋ ๊ฒ๋ ์ง์ด๋ ์๊ด์์ต๋๋ค.์ถ๊ฐ๋ก ํ์ผ๋ช ํ๊ณ ๋ด๋ณด๋ด๋ ํจ์๋ฅผ ๋ค๋ฅด๊ฒ ์ฐ๋ ์ด์ ๊ฐ ์๋๊ณ ์ง๋ฌธ ์ฃผ์ จ๋๋ฐ์, ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ํ์ผ์์ ์ด๋ค ํจ์๋ฅผ ๋ด๋ณด๋ด๋ ๋ถ๋ถ์ธ์ง ๋ต๊ธ๋ก ํ์ ์ฃผ์๋ฉด ํ์ธ ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค.์ถ๊ฐ๋ก ํ์ดํ ํจ์์ function์ ๊ธฐํธ์ ๋ฐ๋ผ ์์ ๋กญ๊ฒ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. ์ด๋ค ๋ฐฉ์์ ์ฌ์ฉํ์๋ ๊ธฐ๋ฅ์๋ ์๋ฌด๋ฐ ์ฐจ์ด๋ ์์ต๋๋ค. export๋ฅผ ํ์ผ์ ํ๋จ์ ์์ฑํ์ง ์๋ ์ด์ ๋ function ํจ์ ์ ์ธ ์์ ๋ถ์ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ์ญ์ ๊ฐ์ธ์ ์ธ ์ฝ๋ ์คํ์ผ๋ก ์ํ์ ๋ค๋ฉด ํ์ผ ํ๋จ์ ์์ฑํ์ ๋ ๋ฉ๋๋ค.
- 0
- 2
- 27
Q&A
eslint์ค์ ๊ด๋ จ์ ๋๋ค.
์๋ ํ์ธ์ ๊น๋ฏผ์ ๋ ์ด์ ํ์ ๋๋ค.์๋์ ๊ฐ์ด rules ๊ฐ์ฒด ์์ ํ ์ค์ ํ๋์ฉ์ ๊ท์น์ ๋ฃ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค.์ฐธ๊ณ ๋ก ์ด๋ ๊ฐ ํญ๋ชฉ์ ๋ง์ง๋ง์ ์ฝค๋ง๋ฅผ ์ฐ์ด์ฃผ์ ์ผ ํ๋ค๋ ์ ์ฃผ์ํ์ ์ผ ํฉ๋๋ค (๊ฐ์ฒด ํ๋กํผํฐ์ด๊ธฐ ๋๋ฌธ)(์ฌ์ง)
- 0
- 2
- 46
Q&A
์ธ์ฆ ์ฒ๋ฆฌํ๊ธฐ์์ ์ง๋ฌธ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์ bluedev12๋ ์ด์ ํ์ ๋๋ค.๋ง์ํ์ ๊ฒ์ฒ๋ผ profile ํ ์ด๋ธ์ ํ์ ์ญ์ ํ๋ ๊ฑด โ๋ถ๊ฐ ์ ๋ณดโ๋ง ์ง์ฐ๋ ๊ฒ์ด๊ณ , ์ค์ ๋ก๊ทธ์ธ์ ์ฐ์ด๋ ์ด๋ฉ์ผ/๋น๋ฐ๋ฒํธ ๊ฐ์ ์ธ์ฆ ์ ๋ณด๋ Supabase Auth ์ชฝ(์ฌ์ฉ์ ๊ณ์ ์์ฒด)์ ๋ฐ๋ก ์ ์ฅ๋ฉ๋๋ค. ๊ทธ๋์ โํ์ ํํด(๊ณ์ ์ญ์ )โ๋ฅผ ์ ๋๋ก ํ๋ ค๋ฉด Auth ์ฌ์ฉ์ ์ญ์ + ๊ด๋ จ ํ ์ด๋ธ ์ ๋ฆฌ๊ฐ ํจ๊ป ์งํ๋์ด์ผ ํฉ๋๋ค.๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ํด์๋ Admin ํด๋ผ์ด์ธํธ๋ฅผ ์ด์ฉํด์ผ ํ๋๋ฐ์, ๋ง์ํ์ ๋๋ก ํด๋ผ์ด์ธํธ ์ธก์์ ์ด๋๋ฏผ ํด๋ผ์ด์ธํธ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ์ํํ๋ฏ๋ก ์ด๋ ๋ณดํต RPC๋ฅผ ์ด์ฉํ๊ฑฐ๋, ๋ณ๋์ ๋ฐฑ์๋ ์๋ฒ๊ฐ ํ์ํ ์์ญ์ ๋๋ค.
- 0
- 2
- 31
Q&A
todolist์์ useReducer๋ฅผ ์ฌ์ฉํ ๋ UPDATE์์ ์ค๋ฅ๊ฐ ์๊น๋๋ค
์๋ ํ์ธ์ ๊ณ ๋ฏผ์ง๋ ์ด์ ํ์ ๋๋ค.ํ์ดํ ํจ์๋ => ์์ ๊ฐ์ ์ ์ด์ฃผ๋ฉด ํด๋น ๊ฐ์ ๋ฐ๋ก ๋ฐํํ๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.const arrayFunction = (a, b) => a + b; // a + b์ ๊ฐ์ ๋ฐ๋ก ๋ฐํํจ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์ด๋ฐ ํ์ดํํจ์์์ ํจ์ ๋ด๋ถ์ ์ฌ๋ฌ์ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค๊ดํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๋ฐํํ๋ ค๋ ๊ฐ์ด ์๋ค๋ฉด ์ผ๋ฐ ํจ์ ์ ์ธ๊ณผ ๊ฐ์ด return์ ์ด์ฉํด์ผ ํฉ๋๋ค.const arrayFunction = (a, b) => { const resValue = a + b; return resValue; } // a + b์ ๊ฐ์ resValue์ ์ ์ฅํด๋์๋ค๊ฐ ๋ฐํํจ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๊ฐ์ฒด๊ฐ์ ๋ฐ๋ก ๋ฐํํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ค๊ดํธ๋ง ์ฌ์ฉํ๋ฉด ํจ์ ๋ณธ๋ฌธ์ผ๋ก ์ดํด๋ฉ๋๋ค.const arrayFunction = (a, b) => { a:a, b:b } // ??? ๋ฌธ๋ฒ ์ค๋ฅ์ด๋ด ๋์๋ ์๊ดํธ๋ก ์ค๊ดํธ๋ฅผ ๋ฌถ์ด์ฃผ๋ฉด ์ด ์ค๊ดํธ ๋ด๋ถ๋ฅผ ๊ฐ์ฒด๋ก ์ธ์งํ์ฌ ๊ฐ์ฒด ๊ฐ์ ๋ฐ๋ก ๋ฐํํ๋ ํ์ดํ ํจ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.const arrayFunction = (a, b) => ({ a:a, b:b }); // {a:a, b:b}๋ฅผ ๋ฐํํจ์ง๋ฌธ์ฃผ์ ์ฝ๋์์๋ ํ์ดํ ํจ์ ๋ค์ ์ค๊ดํธ({)๋ฅผ ์ฌ์ ๋ค์ ๊ฐ์ฒด๋ฅผ ๊ทธ๋๋ก ๋ฆฌํดํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ ์ ๋๋ค.
- 0
- 2
- 35
Q&A
useProfileData์์ queryFn์ ์๋ฌ ์ฒ๋ฆฌ
์๋ ํ์ธ์ ์ต์ฑ์ค๋ ์ด์ ํ์ ๋๋ค.๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด ํด๋น ์์ฒญ์ โ์คํจํ ์ฟผ๋ฆฌโ๋ก ๋ง๋ค๊ณ ์ถ์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.onError๋ ๋ง ๊ทธ๋๋ก ์ฟผ๋ฆฌ๊ฐ ์คํจํ ์ดํ์ ํธ์ถ๋๋ ์ฝ๋ฐฑ์ ๋๋ค. ๋ฐ๋ผ์ ํด๋น ์ฝ๋ฐฑ ํจ์๊ฐ ํธ์ถ๋๋ฉด Tanstack Query ์ ์ฅ์์๋ ์ด๋ฏธ ํด๋น ์ฟผ๋ฆฌ๋ฅผ error ์ํ๋ก ํ๋จํ๊ณ retry(์ฌ ์๋)๋ฅผ ํ๊ฒ ๋๊ฑฐ๋ ํ๋ฉด์ ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ํ๊ธฐํ๋ ๋ฑ์ ๋์์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.ํ์ง๋ง โํ๋กํ์ด ์์ด์ ์กฐํ๊ฐ ์คํจํ๋คโ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ง์ง ์๋ฌ ์ํฉ์ด ์๋๋ผ, โ์์ง ํ๋กํ์ด ์์ฑ๋์ง ์์ ์ ์์ ์ธ ์ด๊ธฐ ์ํโ์ ๊ฐ๊น์ต๋๋ค. ๊ทธ๋์ queryFn ์์์ ๋จผ์ ํ๋กํ ์กฐํ๋ฅผ ์๋ํ๊ณ ํ๋กํ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ง createProfile์ ํธ์ถํด์ ์ ์์ ์ธ ๋ฐ์ดํฐ๋ก ๋ณต๊ตฌํ ๋ค ์ต์ข ์ ์ผ๋ก ๊ฐ์ returnํ๋๋ก ์ค๊ณํ์ต๋๋ค.์ด๋ ๊ฒ ํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์ฑ๊ณตํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ๊ทธ์ ๋ฐ๋ผ ๋ถํ์ํ retry๋ ์๊ณ , UI ์ ์๋ฌ ๋ฉ์ธ์ง๋ ํ๊ธฐํ ํ์๊ฐ ์์ด์ง๋๋ค.๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ ๊ฐ๋ ์ฑ๋ง ๋๊ณ ๋ณด๋ฉด onError๊ฐ ๋ ๋ช ํํด ๋ณด์ผ ์๋ ์์ง๋ง, ์ด ๊ฒฝ์ฐ์๋ ์๋ฌ๋ฅผ ์๋ฌ๋ก ์ทจ๊ธํ์ง ์๋ ๊ฒ์ด ํต์ฌ ์๋์๊ธฐ ๋๋ฌธ์ queryFn ๋ด๋ถ์์ ์ฒ๋ฆฌํ๋ ์ชฝ์ ์ ํํ์ต๋๋ค.
- 0
- 1
- 38
Q&A
npm.ps1 ํ์ผ๋ก ์ธํ npm i randomcolor ์๋๋ ๋ฌธ์
์๋ ํ์ธ์ ์ด๊ธธ์ด๋ด๊ธธ๋ ์ด์ ํ์ ๋๋ค.์ง๋ฌธ์๋ PC์ ํ์์ ์คํฌ๋ฆฝํธ ๊ถํ ๋ฌธ์ ๋ก ๋ณด์ด๋ค์ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ ค๋ฉด ์ฐ์ ํ์์์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํํ์ ๋ค์ ์๋์ ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ์ ๋ ฅํด์ฃผ์ธ์// ํ์ฌ ์คํ ์ ์ฑ ํ์ธํ๊ธฐ Get-ExecutionPolicy์ ๋ช ๋ น์ด๋ ํ์ฌ PC์ ์คํ ์ ์ฑ ์ ํ์ธ ํ๋ ๋ช ๋ น์ด๋ก Restricted ๋๋ RemoteSigned ๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. ์ด๋ ๋ค์ ๊ทธ๋ฆผ์ฒ๋ผ Restricted ๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ฝ์ด ์คํํ ์ ์๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.(์ฌ์ง)์ด๋ด ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ๊ถํ ์ค์ ์ Restricted๊ฐ ์๋ RemoteSigned๋ก ๋ฐ๊ฟ์ฃผ์ ์ผ ํฉ๋๋ค.// ์คํ ์ ์ฑ ์ RemoteSigned๋ก ๋ณ๊ฒฝํ๊ธฐ Set-ExecutionPolicy RemoteSigned
- 0
- 2
- 30




