diff --git a/react-clone/src/Movie.js b/react-clone/src/Movie.js
index cd1f3af..e2cc754 100644
--- a/react-clone/src/Movie.js
+++ b/react-clone/src/Movie.js
@@ -1,34 +1,23 @@
-import { useEffect, useState } from "react";
+import {
+ BrowserRouter as Router,
+ Routes,
+ Route,
+ Link
+} from "react-router-dom";
+import Home from "./routes/Home";
+import Detail from "./routes/Detail";
+
function Movie() {
- const [loading, setLoading] = useState(false);
- const [movies, setMovies] = useState([]);
- const getMovie = async () => {
- const response = await fetch("https://yts.mx/api/v2/list_movies.json?minimum_rating=8.8&sort_by=year");
- const json = await response.json();
- setMovies(json.data.movies)
- setLoading(true)
- }
- useEffect(() => {
- getMovie()
- }, [])
- console.log(movies)
- return (
-
- {loading ? null :
loading
}
-
- {movies.map((movie) => (
-
-
![]({movie.medium_cover_image})
-
{movie.title}
-
{movie.summary}
-
- {movie.genres.map((genres) => - {genres}
)}
-
-
- ))}
-
-
- )
+ return
+
+ }>
+ }>
+
+
}
-export default Movie;
\ No newline at end of file
+export default Movie;
+
+/*Routes 컴포넌트 안에는 Route 컴포넌트만 존재해야함
+=> element 속성 안에 컴포넌트를 넣어줘야됨
+*/
\ No newline at end of file
diff --git a/react-clone/src/components/Moviesub.js b/react-clone/src/components/Moviesub.js
new file mode 100644
index 0000000..b68ef66
--- /dev/null
+++ b/react-clone/src/components/Moviesub.js
@@ -0,0 +1,25 @@
+import PropTypes from "prop-types"
+import { Link } from "react-router-dom";
+function Moviesub({ id, coverImg, title, summary, genres }) {
+ return (
+
+
![]({coverImg})
+
+ {title}
+
+
{summary}
+
+ {genres.map((genres) => - {genres}
)}
+
+
+ )
+}
+
+Moviesub.propTypes = {
+ id: PropTypes.number.isRequired,
+ coverImg: PropTypes.string.isRequired,
+ title: PropTypes.string.isRequired,
+ summary: PropTypes.string.isRequired,
+ genres: PropTypes.arrayOf(PropTypes.string).isRequired,
+}
+export default Moviesub;
\ No newline at end of file
diff --git a/react-clone/src/index.js b/react-clone/src/index.js
index f27e47e..17c14c5 100644
--- a/react-clone/src/index.js
+++ b/react-clone/src/index.js
@@ -3,6 +3,8 @@ import ReactDOM from 'react-dom/client';
//import App from './App';
import Coin from './Coin';
import Movie from './Movie';
+import Home from './routes/Home';
+
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
diff --git a/react-clone/src/routes/Detail.js b/react-clone/src/routes/Detail.js
new file mode 100644
index 0000000..26a36b6
--- /dev/null
+++ b/react-clone/src/routes/Detail.js
@@ -0,0 +1,30 @@
+import { useEffect, useState } from "react";
+import { useParams } from "react-router-dom";
+
+function Detail() {
+ const [loading, setLoading] = useState(true)
+ const [detail, setDetail] = useState("");
+ const { id } = useParams();
+ const getMovie = async () => {
+ const response = (await fetch(`https://yts.mx/api/v2/movie_details.json?movie_id=${id}`));
+ console.log(response)
+ const json = await response.json()
+ console.log(json)
+ setDetail(json.data.movie)
+ setLoading(false)
+ }
+ useEffect(() => {
+ getMovie()
+ }, [])
+ return (
+
+
Detail
+ {loading ? null :
+
![]({detail.medium_cover_image})
+
{detail.title}
+
{detail.description_full}
+
}
+
+ )
+}
+export default Detail;
\ No newline at end of file
diff --git a/react-clone/src/routes/Home.js b/react-clone/src/routes/Home.js
new file mode 100644
index 0000000..7eebe8f
--- /dev/null
+++ b/react-clone/src/routes/Home.js
@@ -0,0 +1,34 @@
+import { useState, useEffect } from "react";
+import Moviesub from "../components/Moviesub";
+
+function Home() {
+ const [loading, setLoading] = useState(false);
+ const [movies, setMovies] = useState([]);
+ const getMovie = async () => {
+ const response = await fetch("https://yts.mx/api/v2/list_movies.json?minimum_rating=8.8&sort_by=year");
+ const json = await response.json();
+ setMovies(json.data.movies)
+ setLoading(true)
+ }
+ useEffect(() => {
+ getMovie()
+ }, [])
+ return (
+
+ {loading ? null :
loading
}
+
+ {movies.map((movie) => (
+
+ ))}
+
+
+ )
+}
+
+export default Home;
\ No newline at end of file