Codingbear
@codingbeer
Reviews Written
13
Average Rating
3.9
Posts
Q&A
ํ ์ผ ๊ด๋ฆฌ ์ฑ(๋ฉ๋ชจ์ด์ ์ด์ )
ํด๋น ์ฝ๋์์ ๋ฌธ์ ๊ฐ ์๋๋ผ todoList ๋ฅผ map์ผ๋ก ๋๋ฆด ๋ key ๊ฐ์ด ์ค๋ณต๋๋ค๋ ๋ฉ์ธ์ง์ด๋๋ฐ๋ณต๋๋ ์ปดํฌ๋ํธ ์์์ key ํ๋กญ์ค๋ฅผ ์ด๋ป๊ฒ ์ฃผ์๋์ง ํ์ธํด ๋ด์ผ ํฉ๋๋ค.// ์๋์ ๊ฐ์ ์ฝ๋ ๋ด์์ key์ ํ ๋นํ ๊ฐ์ด ์ค๋ณต๋๋ ์ง๋ฅผ ํ์ธํด ๋ณด์ธ์. {todos.map((todo, index) => ( {todo} ))}
- 0
- 2
- 19
Q&A
๊ฐ์์๋ฃ
webstoryboy ๋์ ๊นํ๋ธ์ ๋ฐฉ๋ฌธํ์ฌ ์์ค์ฝ๋์์ ๋ถ๋ถํ์๋ฉด ๋ฉ๋๋ค.๊นํ๋ธ ์ฃผ์๋ ๊ฐ์ ์๋ด ํ์ด์ง์ ์์ต๋๋ค.
- 0
- 1
- 18
Q&A
2:40์ด refObj๋ฅผ ์ฝ์๋ก ์ถ๋ ฅ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
useRef() ํ ์ ์ฌ์ฉํ๋ค๋ฉด ํด๋น ๋ณ์์ ํ์ฌ ๊ฐ์ ์ ๊ทผํ๋ ค๋ฉด refObj.current ๋ก ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ const refObj = useRef() ๋ ์ด๊ธฐ๊ฐ์ ์ง์ ํ๊ฑฐ๋ ref ์์ฑ์ผ๋ก ์ฐ๊ฒฐํ ๊ฒ์ด ๋ณด์ด์ง ์์ต๋๋ค.
- 0
- 2
- 42
Q&A
์ฌ์ ์ ๋ฑ๋ก ๋ฒํธ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํ์ฃ ?
๊ฐ๋ฐ๋ชฉ์ ์ผ๋ก ์์์ ์ผ๋ก ๋น์ฆ์ฑ ๋ฑ๋ก์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฑ ์ค์ ์์ ๋น์ฆ๋์ค ํญ๋ชฉ์ '๋น์ฆ ์ฑ ๋ฑ๋ก' ๋งํฌ๋ก ๋ค์ด๊ฐ๋ฉด ๊ฐ์ธ ๊ฐ๋ฐ์ ๋น์ฆ์ฑ ํญ๋ชฉ์ '๊ฐ์ธ ๊ฐ๋ฐ์ ๋น์ฆ ์ฑ ์ ํ' ๋ฒํผ์ด ์์ด์ ๊ทธ๊ฑธ ํด๋ฆญํ๊ณ ๋น์ฆ์ฑ ์ ํ ๋ชฉ์ (ํ์) ๋์ ์ด๋ฉ์ผ ํ์ ๋์ ์ ํํ์๋ฉด ์์ค ๋ก๊ทธ์ธ ํ ๋ ์ด๋ฉ์ผ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์์ ๊ฒ๋๋ค.
- 0
- 2
- 89
Q&A
๋ฆฌ์กํธ ์ค์น์ vite์ create React APP ์ฐจ์ด
CRA(Create React App)์ผ๋ก ์ฌ์ฉํด๋ ์๊ด์ ์์ต๋๋ค.ํ์ง๋ง ์์ฆ์ CRA ๋๋ฆฐ ๋น๋ ์๋์ ๋ณต์กํ ๋น๋ ์ค์ ๋ฑ์ ํ๊ณ ๋์..Vite๋ฅผ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. vite ์ฌ์ฉํ๋ฉด CRA ์ฌ์ฉ ์ ์ํ๊ฒ ๋ฉ๋๋ค.
- 0
- 3
- 113
Q&A
๊ฐ์์ ๋ง๋ค์ด์ง ์ฝ๋๊ฐ ๋ฌ๋ผ์
ํจ์(๋ฉ์๋)๋ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์กฐ๋ถํดํ ๋น(destructuring assignment)ํ์ฌ ๊ฐ์ ธ์จ ์ฐจ์ด์ ๋๋ค.React ์ ReactDOM ์ ๊ฐ์ ธ์(import) ReactDOM.createRoot(), React.StrictMode ๋ฅผ ์ฌ์ฉํ๋๊ฐ?์๋๋ฉด ๊ตฌ์กฐ๋ถํดํ ๋น ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ createRoot(), StrictMode ๋ก๋ง ์ฌ์ฉํ๋๊ฐ์ ์ฐจ์ด์ ๋๋ค.React์์๋ ์ด๋ฐ ๊ตฌ์กฐ๋ถํดํ ๋น์ด ๋ง์ด ์ฌ์ฉ๋๋ ๊ผญ ํด๋น ๋ฌธ๋ฒ์ ์ตํ๋์๋ ๊ฒ ์ข์ต๋๋ค.
- 0
- 3
- 52
Q&A
67๊ฐ ์ํ์ ๋ฐ์ดํธ ๊ฐ์ ์ค ๊ถ๊ธํ ์
Prop Drilling ์ ๋ฐฐ์ฐ์ จ๋์? ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก props๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ๊ฐ ํ์์น ์์ ์ค๊ฐ ์ปดํฌ๋ํธ๋ค๋ ํด๋น props๋ฅผ ์ ๋ฌ ๋ฐ๋ ํจํด์ธ๋ฐ.. ์ข์ ํจํด์ ์๋์ฃ .. ๊ทธ๋์ ๊ฐ๊น๊ฒ๋ Context API๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ๊บผ๊ตฌ์. ์ข ๋ ๋ค์ด๊ฐ๋ฉด ์ปค์คํ ํ , ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ redux, zustand ์ฌ์ฉํ ๊ฒ๋๋ค.
- 0
- 3
- 69
Q&A
isLoading ๊ธฐ๋ฅ ์ถ๊ฐํ๋๋ฐ, ์กด์ฌํ์ง ์๋ ์ผ๊ธฐ ์ ๋๋ค.
isLoading ์ํ๋ localStorage.getItem() ๊ฐ ๋น๋๊ธฐ๊ฐ ์๋๋ฏ๋ก ์ ๋๋ก ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ด์.๊ณ์ true ๋ก '๋ฐ์ดํฐ ๋ก๋ฉ์ค...' ๋ง ๋ฐํํ ์ ์์ต๋๋ค.์ฐ์ ์ isLoading ์ํ๊ฐ์ false ๋ก ์ด๊ธฐํ ํ๊ณ ์ useEffect ๋ด์์ localStorage.getItem('daiary') ํ๊ธฐ์ ์ true๋ก ๋ณ๊ฒฝํ๊ณ ์ฝ๋๋ฅผ ์งํํด ๋ณด์ธ์. const [isLoading, setIsLoading] = useState(false); useEffect(() => { setIsLoading(true); const storedData = localStorage.getItem("diary"); if (!storedData) { setIsLoading(false); return; } const parsedData = JSON.parse(storedData); if (!Array.isArray(parsedData)) { setIsLoading(false); return; } let maxId = 0; parsedData.forEach((item) => { if (Number(item.id) > maxId) { maxId = Number(item.id); } }); idRef.current = maxId + 1; console.log(parsedData); dispatch({ type: "INIT", data: parsedData, }); setIsLoading(false); }, []);
- 0
- 3
- 66
Q&A
tsconfig.app.json์์ ์๋ฌ๋ฐ์
TypeScript ๋ฒ์ ์ด 7, 6์ด ๋์๋์?? ํ์ฌ ๋ฒ์ ์ด 5.9.x ์ธ๊ฑธ๋ก ์๊ณ ์๋๋ฐ..baseUrl , paths ์ค์ ๋ถ๋ถ์ tsconfig.json ํ์ผ๊ณผ tsconfig.app.json ํ์ผ์๋ง ์ค์ ํ์๋์ง ํ์ธํด ๋ณด์ธ์. ํน์ tsconfig.node.json ์ ์ค์ ํ์๋ค๋ฉด ๊ทธ๊ณณ์๋ ํด๋น ์ค์ ์ ์ ๊ฑฐํ์ธ์.tsconfig.json ํ์ผ์ baseUrl, paths ์ค์ ์ ๋ค์๊ณผ ๊ฐ์์ง ํ์ธํ์ธ์.{ "files": [], "references": [ { "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" } ], /* ํ ํ๋ฆฟ ์ฝ๋์ ์ถ๊ฐ๋ ๋ถ๋ถ : Path Alias */ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./src/*"] } } }
- 0
- 3
- 142
Q&A
15๋ฒ์ ์ดํ์ (searchParams,Params) Promiseํ์ ๋ช ์ํ ๋ฆฌ์กํธ ์์คํ์ค ์ค์ต ์ง๋ฌธ
Next 15๋ฒ์ ๋ถํฐ cookies, headers, params, searchParams, draftMode ๋ฑ์ด ๋น๋๊ธฐ API ํ ๋์์ต๋๋ค.๋ฐ๋ผ์ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ฉฐ ๋ฐ๋ผ์ ํจ์์ async๋ฅผ ์ ์ธํด์ค์ผ ํฉ๋๋ค. ๋ง์ฝ ์ผ์์ ์ธ ๋๊ธฐํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ ํ๋ค๋ฉด ์๋ ์ฝ๋์ ๊ฐ์ด React์ use() ์ฌ์ฉํด ๋ณด์ธ์.'use client'; import { use } from 'react'; export default function Page({ searchParams }: { searchParams: Promise }) { const { q } = use(searchParams); //.... ์๋ต }
- 2
- 3
- 151




