Post

๐ŸŽฌ ReactJS๋กœ ์˜ํ™” ์›น ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ (11) - Moive App ๋งŒ๋“ค๊ธฐ

๋“œ๋””์–ด ๊ฐ•์˜์˜ ๋งˆ์ง€๋ง‰ ์ฝ”์Šค์ธ ์˜ํ™” ์›น ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ !! ๐Ÿคฉ๐Ÿคฉ
์ฐจ๊ทผ์ฐจ๊ทผ ๋งŒ๋“ค์–ด๋ณด์žฅ

์˜ํ™” API ๊ฐ€์ ธ์˜ค๊ธฐ


์ด๋ฒˆ์—๋Š” ์˜ํ™” ์ •๋ณด๋“ค์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด https://yts.mx/api/v2/list_movies.json ์ด API๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค

๋‚˜๋Š” ๊ทธ ์ค‘์—์„œ๋„ ๋ณ„์ ์ด 9์  ์ด์ƒ์ด๊ณ  ์—ฐ๋„๋ณ„๋กœ ์ •๋ ฌํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์–ด์„œ url๋’ค์— minimum_rating=9&sort_by=year ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค

๐Ÿงฉ then ๋Œ€์‹  async-await

์ „ ๊ฒŒ์‹œ๋ฌผ์—์„œ์˜ coin tracker๋ฅผ ๋งŒ๋“ค๋• api์—์„œ json data๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ

1
2
3
4
5
6
fetch("https://yts.mx/api/v2/list_movies.json?minimum_rating=9&sort_by=year")
  .then((response) => response.json())
  .then((json) => {
    setMoives(json.data.movies);
    setLoading(false);
  });

์ด๋Ÿฐ์‹์œผ๋กœ then์„ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ ๋ณดํ†ต์€ then ๋Œ€์‹  โญasync-awaitโญ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

1
2
3
4
5
6
7
8
9
10
11
const getMovies = async () => {
  const response = await fetch(
    "https://yts.mx/api/v2/list_movies.json?minimum_rating=9&sort_by=year"
  );
  const json = await response.json();
  setMoives(json.data.movies);
  setLoading(false);
};
useEffect(() => {
  getMovies();
}, []);

์ด๋ ‡๊ฒŒํ•˜๋ฉด ์œ„์—์„œ์˜ then์„ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค
์ด getMoviesํ•จ์ˆ˜ ์ฝ”๋“œ๋ฅผ ๋” ์ค„์ด๋ฉด

1
2
3
4
5
6
7
8
9
const getMovies = async () => {
  const json = await (
    await fetch(
      "https://yts.mx/api/v2/list_movies.json?minimum_rating=9&sort_by=year"
    )
  ).json();
  setMoives(json.data.movies);
  setLoading(false);
};

์ด๋ ‡๊ฒŒ await๊ฐ€ ๋˜ ๋‹ค๋ฅธ await๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์ค„์ผ ์ˆ˜๋„ ์žˆ๋‹ค!



์ด ์ดํ›„๋ถ€ํ„ฐ๋Š” ์ด ์ „์˜ coin tracker๋ฅผ ๋งŒ๋“ค๋•Œ์™€ ๊ฐ™์ด ๊ฐ€์ ธ์˜จ api data๋“ค์„ ์ด์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ๊พธ๋ฉฐ์ฃผ์—ˆ๋‹ค



๐Ÿ˜• ์–ด๋ ค์› ๋˜ ์ 

20240215_1801550369-ezgif com-video-to-gif-converter

ํ—ค๋”์˜ MOVIE COLLECTION ํ…์ŠคํŠธ ์œ„์น˜๋ฅผ ์ž˜ ๋ณด๋ฉด,,,
ํ™ˆ ํ™”๋ฉด์—์„œ api๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์ „์— ๋กœ๋”ฉ์ค‘์ผ ๋•Œ์™€ ๋กœ๋”ฉ๋œ ํ›„์˜ ํ…์ŠคํŠธ ์œ„์น˜๊ฐ€ ๋ฏธ์„ธํ•˜๊ฒŒ ์›€์ง์ด๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค
์ฒ˜์Œ์—” ๋‚ด๊ฐ€ ํ—ค๋”์˜ ์Šคํƒ€์ผ์„ ์ด์ƒํ•˜๊ฒŒ ์ค€ ์ค„ ์•Œ๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ์ง€์šฐ๊ณ  ์ถ”๊ฐ€ํ•˜๊ณ ๋ฅผ ๋ฐ˜๋ณตํ–ˆ๋Š”๋ฐ,,
์•Œ๊ณ ๋ณด๋‹ˆ api๊ฐ€ ๋กœ๋”ฉ๋œ ํ›„์— ์Šคํฌ๋กค๋ฐ”๊ฐ€ ์ƒ๊ฒจ์„œ ์Šคํฌ๋กค๋ฐ”์˜ ๋„ˆ๋น„ ๊ธธ์ด ๋•Œ๋ฌธ์— ํ—ค๋”์˜ ๊ธธ์ด๋„ ๊ฐ™์ด ๋ฐ”๋€Œ๋Š” ๊ฑฐ์˜€๋‹ค..๐Ÿคฆ๐Ÿปโ€โ™€๏ธ
์Šคํฌ๋กค๋ฐ”๋Š” ์ƒ๊ฐ๋„ ๋ชปํ–ˆ๋‹ค ์ง„์งœโ€ฆ.

๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜์˜€๋А๋ƒ !
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๊ฐ„๋‹จํ–ˆ์Œ

๐Ÿ™‚ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

html์™€ body๋ฅผ 100vw๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

1
2
3
4
5
6
html,
body {
  width: 100vw;
  overflow-x: hidden;
  overflow-y: auto;
}

์ด๊ฒƒ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด,,

20240215_1754550032-ezgif com-video-to-gif-converter

(๋Œ€์ถฉ ํŽธ์•ˆํ•˜๋‹ค๋Š” ์งค)

์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ์œ ์˜ํ•  ์ ์€ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์Šคํฌ๋กค๋ฐ” ๋•Œ๋ฌธ์— ๋งจ ์˜ค๋ฅธ์ชฝ์ด ์•ฝ๊ฐ„ ์ž˜๋ฆฐ๋‹ค๋Š” ๊ฒƒ.
์ด ์ ์„ ์—ผ๋‘ํ•ด ๋‘๊ณ  ์Šคํƒ€์ผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค


๐Ÿ–ฅ๏ธ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ

์—„์ฒญ๋‚˜๊ฒŒ ๋งŒ์กฑ์Šค๋Ÿฝ์ง„ ์•Š์ง€๋งŒ,, ๊ทธ๋ƒฅ ๊น”๋”ํ•˜๊ฒŒ ๊พธ๋ฏธ๋Š” ๊ฒƒ์— ๋ชฉํ‘œ๋ฅผ ๋‘๊ณ  ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค

๐Ÿ‘‰๐Ÿป ํ™•์ธํ•˜๋Ÿฌ๊ฐ€๊ธฐ๐Ÿ’จ๐Ÿ’จ

This post is licensed under CC BY 4.0 by the author.