Frontend ๐Ÿ“š/React 44

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 6. ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ์ฐœ ํŽ˜์ด์ง€ ๊ตฌํ˜„

์˜ํ™” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๋ฐ ์ฐœ ํŽ˜์ด์ง€ ๊ตฌํ˜„์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ฐœ ํŽ˜์ด์ง€์™€ ์˜ํ™” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ์—์„œ ์ฐœ ๋ชฉ๋ก์„ ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์˜ํ™” ๊ฒ€์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.1. ์˜ํ™” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„์‚ฌ์šฉ์ž๋Š” ์˜ํ™” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ์˜ํ™”๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ TMDB API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰๋œ ์˜ํ™” ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๊ณ , ํ•„ํ„ฐ๋ง ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์˜ํ™”๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.1.1 ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ ๋ฐ API ํ˜ธ์ถœ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ๊ฒ€์ƒ‰์–ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ TMDB API์—์„œ ์˜ํ™” ๋ชฉ๋ก์„ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด useState๋กœ ๊ฒ€์ƒ‰์–ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด searchMovies ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ..

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 4. ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํŒ์—… ๊ตฌํ˜„

๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํŒ์—… ๊ตฌํ˜„์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ๊ทธ์ธ ํŒ์—…์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒ์—… ์•ˆ์—์„œ ๋กœ๊ทธ์ธ๊ณผ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋ฉฐ, ๋กœ๊ทธ์ธ ์œ ์ง€ ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.1. ์ฃผ์š” ๊ธฐ๋Šฅ1.1 ๋กœ๊ทธ์ธ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ์‚ฌ์šฉ์ž ๋ชฉ๋ก๊ณผ ๋น„๊ตํ•˜์—ฌ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์— ์„ฑ๊ณตํ•˜๋ฉด isLoggedIn ๊ฐ’์„ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ๋œ ์ƒํƒœ๋กœ ์•ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.1.2 ํšŒ์›๊ฐ€์ž…ํšŒ์›๊ฐ€์ž…์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ํ•„๋“œ๋ฅผ ์ œ๊ณตํ•˜..

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 3. API ํ˜ธ์ถœ๊ณผ Local Storage๋ฅผ ํ™œ์šฉํ•œ ์˜ํ™” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

API ํ˜ธ์ถœ๊ณผ Local Storage๋ฅผ ํ™œ์šฉํ•œ ์˜ํ™” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ๋Š” TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ๊ณผ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™œ์šฉํ•œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” API ํ˜ธ์ถœ๊ณผ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ จ ์ฝ”๋“œ์˜ ์ฃผ์š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.1. TMDB API ์„ค์ •TMDB(The Movie Database)๋Š” ์˜ํ™” ๋ฐ์ดํ„ฐ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” TMDB API๋ฅผ ์‚ฌ์šฉํ•ด ์ธ๊ธฐ ์˜ํ™”, ํŠน์ • ์˜ํ™” ์ •๋ณด, ์˜ํ™” ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.API ์„ค์ • ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:import axios from "axios";// TMDB API ๊ธฐ๋ณธ ์„ค์ •const BASE_URL = "";const API_KEY = process.env.REACT_APP_TMDB_API_KEY; // ํ™˜๊ฒฝ ..

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 2. ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ์„ค์ •

์ด ๊ธ€์—์„œ๋Š” ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์„ค์ •๊ณผ ์ดˆ๊ธฐ ํŒŒ์ผ ๊ตฌ์กฐ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค. 1. React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋จผ์ €, React ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด React ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:npx create-react-app netflix-clonenpx create-react-app ๋ช…๋ น์–ด๋Š” React ๊ณต์‹ ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.netflix-clone์€ ํ”„๋กœ์ ํŠธ ํด๋” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค:cd netflix-clone์˜์กด์„ฑ ์„ค์น˜ ํ™•์ธReact ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ์˜์กด์„ฑ๋“ค์ด ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. package.json ํŒŒ์ผ์„ ์—ด์–ด ๋‹ค์Œ ํŒจํ‚ค์ง€๊ฐ€..

[React] TMDB API๋ฅผ ํ™œ์šฉํ•œ ๋„ทํ”Œ๋ฆญ์Šค ํด๋ก  ์ฝ”๋”ฉ - 1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๋„ทํ”Œ๋ฆญ์Šค์˜ ํ”„๋ก ํŠธ ๋ถ€๋ถ„์„ ํด๋ก  ์ฝ”๋”ฉํ•ด ๋ณด์ž!TMDB API๋กœ ์˜ํ™” ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์™€ ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์˜ˆ์ •๋„ทํ”Œ๋ฆญ์Šค ํด๋ก ์ฝ”๋”ฉ ํ”„๋กœ์ ํŠธ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋„ทํ”Œ๋ฆญ์Šค์˜ ๊ธฐ๋ณธ์ ์ธ UI์™€ ๊ธฐ๋Šฅ์„ ํด๋ก ํ•œ ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๋„ทํ”Œ๋ฆญ์Šค์˜ ๋””์ž์ธ์„ ์ฐธ๊ณ ํ•˜์—ฌ, ์˜ํ™” ๋ชฉ๋ก์„ ๋ณด๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ์ฆ๊ฒจ์ฐพ๊ธฐํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.1. ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œReact ํ™œ์šฉ ๋Šฅ๋ ฅ ๊ฐ•ํ™”React์˜ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ, ์ƒํƒœ ๊ด€๋ฆฌ, ๋ผ์šฐํŒ… ๋“ฑ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.UI/UX ๋””์ž์ธ ์ดํ•ด๋„ทํ”Œ๋ฆญ์Šค์˜ ์ง๊ด€์ ์ด๊ณ  ๊น”๋”ํ•œ UI๋ฅผ ๋”ฐ๋ผ ๋””์ž์ธํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์˜ ๊ฒฝํ—˜์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.API ํ†ต์‹  ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฒฝํ—˜์™ธ๋ถ€ API๋ฅผ ์—ฐ๋™ํ•ด ์‹ค์‹œ๊ฐ„ ์˜ํ™” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์„ ๋ฐฐ์›๋‹ˆ๋‹ค.๋ฐฐํฌ ๊ฒฝํ—˜์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ด๋ณด๊ณ  ์‚ฌ์šฉ์ž ์ž…์žฅ..