jeonghwan
@jeonghwan
Students
14,134
Reviews
896
Course Rating
4.8
์์
์ค ๊ถ๊ธํ ์ฌํญ์ ์ง๋ฌธ ์ฌํญ์ ์ฌ๋ ค์ฃผ์ธ์.
๋งค์ผ ํ ๋ฒ์ฉ ํ์ธํ๊ณ ๋ต๋ณ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
Courses
Reviews
- [React Part 2] Advanced Topics and Hooks
- [React Part 2] Advanced Topics and Hooks
- Understanding and Practice of Frontend Development Environment (webpack, babel, eslint..)
- NodeJS API Server Built with Test-Driven Development (TDD)
- Master the Core of Web Development, HTTP Perfectly!
Posts
Q&A
useEffect ์์กด์ฑ ์ง๋ฌธ
์๋ ํ์ธ์ dev.mingyo๋. ์์์์ useEffect ์์กด์ฑ ๋ฐฐ์ด์ path ๋ฅผ ๋ฃ์ ๊ฒ์ ๋ํด ์ง๋ฌธ ์ฃผ์ จ๋ค์. ๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด, ์ ๋ฃ๋ ๊ฒ์ด ๋ง์ต๋๋ค. ๋ถ์ ํจ๊ณผ๋ "popstate" ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ์ญํ ์ด๊ณ ์. path๋ history ๊ฐ์ฒด์ ์ ๋ฌํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋๋ฐ์, ๋ง์ดํธ ์์ ์ ๊ฐ์ผ๋ก๋ ์ถฉ๋ถํด์ ํ ๋ฒ๋ง ์คํ๋์ด๋ ๋ฉ๋๋ค. ์คํ๋ ค path๋ฅผ ์์กด์ฑ์ผ๋ก ์ ๋ฌํ๊ฒ๋๋ฉด path ๋ณ๊ฒฝ์ ๋ฐ๋ผ์ ์ด๋ฒคํธ ๋ฑ๋ก/ํด์ง ๊ณผ์ ์ด ๋ถํ์ํ๊ฒ ๋ฐ๋ณต๋๋ ๋ญ๋น๊ฐ ์๊ธดํด์.์์์์๋ ๋์ณค์ง๋ง, ์ค์ต ์ฝ๋์์๋ ์์กด์ฑ์ด ์๋ ์ ๋ ์ฐธ๊ณ ํด ์ฃผ์๋ฉด ์์ ์ ๋ฐ๋ผ์ค์๋ ๋ฐ ๋ ํท๊ฐ๋ฆฌ์ค ๊ฒ ๊ฐ์ต๋๋ค.
- 1
- 2
- 47
Q&A
์๋ชป๋ useEffect ์ฌ์ฉ?
์๋ ํ์ธ์ dev.mingyo๋. ๋ฆฌ์กํธ์ ํต์ฌ์๋ฆฌ๋ฅผ ๋ ์นด๋กญ๊ฒ ์ง์ ํด ์ฃผ์ จ๋ค์.๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฝ๋๋ค. ๋ค, ๋ง์ต๋๋ค. ํด๋น์ฝ๋๋ useEffect๋ฅผ ์ค์ฉํ ์ฌ๋ก๊ฐ ๋ง์ต๋๋ค. ๋ถํ์ํ ๋ ๋๋ง๋ฆฌ์กํธ๋ ์ํ๊ฐ ๋ณํ๋ฉด ๋ ๋๋ง์ ์ํํ๋๋ฐ์. ์ฌ์ฉ์๊ฐ ๊ฐ์ ์ ๋ ฅ ํจ โ setValue ํธ์ถ (1์ฐจ ๋ ๋๋ง)๋ ๋ ์งํ useEffect ์คํ โ setErrors ํธ์ถ (2์ฐจ ๋ ๋๋ง)ํ ๋ฒ๋ง ์ ๋ ฅํด๋ ๋ธ๋ผ์ฐ์ ธ๋ ๋งค๋ฒ ๋ ๋ฒ์ฉ ํ๋ฉด์ ๊ทธ๋ฆฌ๋๋ฐ์, ์๋น์ค๊ฐ ์ปค์ง์๋ก ์ฑ๋ฅ ์ ํ์ ์์ธ์ด ๋ ์ ์์ต๋๋ค.๊ฐ์ ๋ฐฉํฅ errors ์ํ๋ฅผ ๋์์ง๋ง ์ค์ values๋ฅผ ํตํด ํ์๋ ์ ์๋ ๊ฐ์ ๋๋ค. ๊ณต์ ๋ฌธ์์์ ๊ฐ์กฐํ๋ฏ, ๊ธฐ์กด ์ํ๋ฅผ ์กฐํฉํด์ ๋ง๋ค ์ ์๋ ๊ฐ์ ๋ณ๋์ ์ํ๋ก ๋์ง ์๋ ๊ฒ์ด ์ ์ง๋ณด์์ ํจ์ฌ ์ ๋ฆฌํด์. errors๋ฅผ ์ง์ ๋ ๋๋ง ๋ด์ ๋ณ์๋ก ์ ์ธํ๋ ๊ฒ์ด '๋ฆฌ์กํธ๋ค์ด' ํด๊ฒฐ์ฑ ์ ๋๋ค.// โ ๊ธฐ์กด ๋ฐฉ์: ๋ถํ์ํ ๋ ๋๋ง ๋ฐ์ // const [errors, setErrors] = useState({}); // useEffect(() => { setErrors(validate(values)) }, [values]); // โ ํ์๋ ์ํ๋ก ์ฒ๋ฆฌ (useState/useEffect ์ ๊ฑฐ) const errors = validate(values);์ด๋ ๊ฒ ์์ฑํ๋ฉด values๊ฐ ๋ฐ๋ ๋ ๋ฆฌ์กํธ๊ฐ ๋ ๋๋ง์ ์์ํ๊ณ , ์ต์ errors ๊ฐ์ ๊ณ์ฐํ์ฌ ํ๋ฉด์ ๊ทธ๋ฆฝ๋๋ค. ์ฝ๋๋ ํจ์ฌ ๊ฐ๊ฒฐํด์ง๊ณ ์ฑ๋ฅ๋ ์ต์ ํ๋ ์ ์์ต๋๋ค.
- 1
- 2
- 53
Q&A
orderableProductItem ์ ๊ดํ์ฌ...
์๋ ํ์ธ์ ์ปดํฌ๋ํธ ๊ตฌ์กฐ์ ๋ํ ์ง๋ฌธ์ ์ฃผ์ ๊ฒ ๊ฐ๋ค์. ์ปดํฌ๋ํธ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ฑ์ฅํ๋ฉด์ ๊ทธ ๊ตฌ์กฐ๋ ๋ฌ๋ผ์ง์ ์๋๋ฐ์. ProductItem๊ณผ OrderableProductItem์ ์ด๋ฌํ ๊ด์ ์ผ๋ก ์ดํดํ์๋ฉด ์ข์ต๋๋ค.์ํ ์์ธ: ProductItem์ผ๋ก ์ํ ์ ๋ณด์ ์ฃผ๋ฌธํ๊ธฐ ๋ฒํผ์ ๋ ๋ฐ๋งํฉ๋๋ค. ์ดํ ์ฅ๋ฐ๊ตฌ๋์์๋ ๋น์ทํ UI๋ฅผ ๋ ๋ ํ๋๋ฐ์. ์ํ ์์ธ์ ๋น์ทํด ProductItem์ ์ฌ์ฌ์ฉํ๋ ค๋ ํ๋จ์์ ์์ํฉ๋๋ค.์ฅ๋ฐ๊ตฌ๋: ์ํ์์ธ์์๋์ฃผ๋ฌธํ๊ธฐ๋ฒํผ์ด์์ง๋ง์ฅ๋ฐ๊ตฌ๋์์๋์์ด์์ด๋ฌํ์กฐ๊ฑด๋ถ๋ ๋๋ง์ ProductItem ์ญํ ๋ก๋์์ต๋๋ค. ์ํ์์ธ์์๋๋ฒํผ๊น์ง๋ ๋ํ๋๋ก์กฐํฉํ ์์๊ณ ์(onClick ์ ๋ฌ). ์ฅ๋ฐ๊ตฌ๋์์๋๋ฒํผ์ด๋ ๋๋์ง์๋๋ก์ฌ์ฉํ ์์๊ฒ๋ฉ๋๋ค(onClick ์๋ต). ๋ง์ง๋ง์๊ฐ๋ ์ฑ์์ํด์์ด๋ฌํ์กฐํฉ์ผ๋ก OrderableProductItem์ด๋์ปดํฌ๋ํธ๋ฅผ์ ์คํ๊ฒ์ ๋๋ค.
- 0
- 2
- 47
Q&A
๊ฐ์ ์๋ฃ, ๋ธ๋ก๊ทธ, ๊น ์ฃผ์
๊ฐ์ ๋ณธ๋ฌธ์ ๋งํฌ๊ฐ ์ ๋๋ก ์ฐ๊ฒฐ๋์ด ์์ง ์์๋ค์. ์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ฝ๋ | ๊นํ์๊ตฌ์ฌํญ ๋ฌธ์ | ๊นํ๊ฐ์ ๋ ธํธ | ๊น์ ํ๋ธ๋ก๊ทธ๋ณธ๋ฌธ๋ ์์ ํด ๋์์ต๋๋ค.
- 0
- 1
- 54
Q&A
React ํ ๊ตฌํ ์๋ฆฌ์ ์ค๋ฌด ํจํด ๊ด๋ จ ์ง๋ฌธ (useState, useEffect ์์ ๋ฐ ํธ๋ค๋ฌ ๊ตฌ์กฐ)
๊ธฐ๋ฅ์ ๊ตฌํํ๋ค๋ณด๋ฉด ์ํ๊ฐ ๋์ด๊ฐ๋ ๊ฒฝ์ฐ๋ ๋น๋ฒํ๋ฐ์. ์ด๋ ์ํ ๊ด๋ฆฌ๋ก ์ธํด ํ์๋๋ ํธ๋ค๋ฌ๋ ์ดํํธ๋ ๋์ด๋ ์ฝ๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ด ์๊ฐ์ด ์์ต๋๋ค. ์ด์ ๋ํ ์ง๋ฌธ์ ์ฃผ์ ๊ฒ ๊ฐ์์. ์ ๋ ์ํ ๊ด๋ฆฌ๊ฐ ๋ง์์ ธ ํ ์ปดํฌ๋ํธ์์ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๋ค๋ฉด, ๋ณ๋์ ์ญํ ์ ํ๋ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๊ฑฐ๋, ์ปค์คํ ํ ์ผ๋ก ๋ถ๋ฆฌํด ์ฌ์ฉํฉ๋๋ค. ๊ด๋ จ๋ ๋ฆฌ์กํธ ์จ๋ฆฌ๋ฉํธ ๋ฐํ๋ก์ง๊น์ง ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๋ค๋ฉด, ์ด๋ฅผ JSX ๋ฌธ๋ฒ์ผ๋ก ๊ฐํธํ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์์๊ฒ๋๋ค. ์ปค์คํ ํ ์ผ๋ก ๋ถ๋ฆฌํ๋ค๋ฉด, ์ถ์ํ ๊ณ์ธต์ผ๋ก ๋ณต์กํ ๋ก์ง์ ์จ๊ธฐ๊ณ ์ปดํฌ๋ํธ์์๋ ์ด๋ฅผ ํตํด ๊ด๋ จ๋ ์ํ์ ํธ๋๋ฌ๋ฅผ ์ ๊ณต ๋ฐ์ ์ ์์ด์. ๋ค๋ฅธ ์ฌ๋์ด ์์ฑํ ์ฝ๋๋ฅผ ๋ง์ด ๋ณด๊ณ , ์ฌ๋ฌ ๋ฒ์ ์ํ์ฐฉ์ค ๊ฒฝํ์ ๊ฒช์ผ๋ฉด ๊ท ํ์กํ ์ปดํฌ๋ํธ ์ค๊ณ ๊ธฐ๋ฒ์ ๊ฐ์ถ์ค ์ ์์๊ฑฐ์์.
- 1
- 2
- 97
Q&A
์ง๊ธ ์์ ์์ ํด๋น ๊ฐ์๋ฅผ ๋ฃ๋ ๊ฒ์ ๋ํ์ฌ
์๋ ํ์ธ์, ๊ฐ์ ์๊ฐ ๊ด๋ จํด ๋ฌธ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์ต์ ๊ฐ๋ฐํ๊ฒฝ์ ๋นํด ์์ ์์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ด ๋ง์ง ์๊ธดํฉ๋๋ค. ํ์ง๋ง ๋ฒ์ ๊ณผ ๋ฌด๊ดํ ๊ธฐ๋ณธ ์๋ฆฌ์ ๋ํ ๋ด์ฉ์ ๋ฐฐ์ฐ์ค์ ์์ ๊ฑฐ์์. ๊ฐ๋ ์ ํํํ ์ดํดํ๊ณ ๋์๋ฉด ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ๋ง๋๋๋ผ๋ ํจ์ฌ ์์ ๊ฐ ์๊ฒ ๋ค๋ฃจ์ค์ ์์ ๊ฒ๋๋ค. ์ด์ ๊ด๋ คํ ํ๊ธฐ๋ค๋ ์ฌ๋ ค์ฃผ์ จ๋๋ฐ์, ์ฐธ๊ณ ํด ๋ณด์๋ฉด ๊ฐ์ ์๊ฐ์ ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋์ค ๊ฒ ๊ฐ์ต๋๋ค.https://inf.run/8XzcVhttps://inf.run/2N6rehttps://inf.run/VSRZc
- 1
- 3
- 95
Q&A
๋ฆฌ์กํธ 1,2๋ถ ์ดํ ํ์ ๊ฐ์๋ ์ค๋น ์ค์ธ ๋ค๋ฅธ ๊ฐ์๊ฐ ์์ผ์ ๊ฐ์?
๊ฐ์๋ฅผ ์ข๊ฒ ํ๊ฐํด ์ฃผ์ ์ ๋ฌด์ฒ ๊ณ ๋ง์ต๋๋ค. ๋ฆฌ์กํธ1๋ถ ๊ฐ์๋ฅผ ๋ง์น์ จ๋ค๋ฉด 2๋ถ๋ก ๋์ด๊ฐ์ ์ ํ ๊ณผ ๊ณ ๊ธ ์ฃผ์ ๋ฅผ ํ์ตํ์๊ธธ ์ถ์ฒ ๋๋ฆฝ๋๋ค. ์น ๊ฐ๋ฐ์ ๊ธฐ์ด ์ง์ ์ค์ HTTP๋ฅผ ์ดํดํ๊ณ ์ตํ๋ ์์ ์ด ์๋๋ฐ ์ด๊ฒ๋ ๊ฐ์ด ์๊ฐํ์๋ฉด ๋์์ด ๋ ๊ฑฐ์์. https://inf.run/GFc3Z
- 1
- 2
- 83
Q&A
๋ธ๋ผ์ฐ์ ๋ด๋ถ ๋ณด์ ์ ์ฑ ์ค์ฝํ์ ๋ํ ์ง๋ฌธ
์ข์ ์ง๋ฌธ์ ๋๋ค. ์ด ๋ด์ฉ์ HTTP ๋ณด์์ ์ฑ ์ ๋ธ๋ผ์ฐ์ ธ ๋ด๋ถ ๋์ ์๋ฆฌ์ ํด๋น๋์ด, ์์ ๋ฒ์๋ฅผ ์ฝ๊ฐ ๋์ด๊ฐ๊ธด ํฉ๋๋ค. ๋ฐฉํฅ์ ์ก์ ์ ์๋ค๋ก ํต์ฌ๋ง ๋ง์๋๋ฆด๊ฒ์.๋ธ๋ผ์ฐ์ ธ์ ๋ณด์ ์ ์ฑ ์ ์ผ๋ฐ์ ์ผ๋ก Origin ๋จ์๋ก ์ ์ฉ๋ฉ๋๋ค.๋จ, ๋ง์ํ์ ๋๋ก ์ฟ ํค๋ ์กฐ๊ธ ๋์ ๋จ์๋ก ์ ์ฉ๋ฉ๋๋ค.๋ธ๋ผ์ฐ์ ธ๋ณ๋ก ์ธ๋ถ ๋์์ด ์กฐ๊ธ์ฉ ๋ค๋ฅผ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- 1
- 1
- 60
Q&A
์ค๋ฌด์์ ์น๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก ์ ์ธํ๋ ๋ณด์ ์ ์ฑ ์ ๋ฒ์ ๋ฐ ๋ณด์ ์ ์ฑ ์ค์ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Express.js๋ฅผ ์๋ก ๋ค๋ฉดCORS: cors ๊ณต์ ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด ์์ฝ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.์๋ฅผ ๋ค์ด app.use(cors({ /* ์ค์ ์ต์ */ }))์ฟ ํค ๋ณด์ ์์ฑ: ํ๋ ์์ํฌ ์์ฒด์ res.cookie() ๊ฐ์ API๋ก ์ค์ ํ ์ ์์ต๋๋ค.CSP ํค๋๋ ์ฃผ๋ก ์๋ฒ ๋ ๋ฒจ(Nginx, CDN)์ด๋ ๋น๋๋ HTML์ ๋ฐํํ๋ ๊ตฌ๊ฐ๋ฐ์ ์ค์ ํฉ๋๋ค.Express ํ๊ฒฝ์ด๋ผ๋ฉด helmet ๊ฐ์ ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด ๋๋ถ๋ถ์ ๋ณด์ ํค๋๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- 1
- 2
- 98
Q&A
pushState๋ก ์ฃผ์๋ฅผ ๋ฐ๊พธ๋ฉด ๋ ๋๋ง์ด ์ ๋๋ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
pushState๋ ๋ธ๋ผ์ฐ์ ธ์ ํ์คํ ๋ฆฌ ์ํ๋ง ๋ณ๊ฒฝํฉ๋๋ค. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ ์ด ์ํ์ ์ ํ ์๊ด์๋ ๊ฐ์ฒด์ด๊ณ ์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ๋ฆฌ์กํธ ์ํ(path)๋ฅผ ๋์๋๋ฐ์. ์ด๋ฅผ ๋ณ๊ฒฝํด ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๊ทธ๋ ค์ง๋๋ก(๋ฆฌ๋ ๋) ์๋ํ ๊ฒ์ ๋๋ค.์ ๋ฆฌํ๋ฉด,pushState: ํ์คํ ๋ฆฌ ์ํ ๋ณ๊ฒฝ setState: ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์ํ ๋ณ๊ฒฝ โ ๋ฆฌ๋ ๋ ์ ๋ฐ
- 1
- 2
- 78





![Thumbnail image of the [React Part 2] Advanced Topics and Hooks](https://cdn.inflearn.com/public/courses/332123/cover/62407827-5375-47cf-91fa-4877bf72c139/332123-eng.png?w=148)

