diff --git a/client/src/App.js b/client/src/App.js index 740adc7a8a..5638a53250 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -1,18 +1,28 @@ -import React, { useState } from 'react'; +import React, { useState } from "react"; -import SavedList from './Movies/SavedList'; +import SavedList from "./Movies/SavedList"; + +import MovieList from "./Movies/MovieList"; + +import Movie from "./Movies/Movie"; + +import { Route } from "react-router-dom"; const App = () => { - const [savedList, setSavedList] = useState( [] ); + const [savedList, setSavedList] = useState([]); const addToSavedList = movie => { - setSavedList( [...savedList, movie] ); + setSavedList([...savedList, movie]); }; return (
-
Replace this Div with your Routes
+ + } + />
); }; diff --git a/client/src/Movies/Movie.js b/client/src/Movies/Movie.js index 25dd470bee..6685eef184 100644 --- a/client/src/Movies/Movie.js +++ b/client/src/Movies/Movie.js @@ -1,57 +1,43 @@ -import React, { useState, useEffect } from 'react'; -import axios from 'axios'; +import React, { useState, useEffect } from "react"; +import axios from "axios"; +import MovieCard from "./MovieCard"; + +const Movie = props => { + const [movie, setMovie] = useState(); -const Movie = (props) => { - const [movie, setMovie] = useState({}); - useEffect(() => { - const id = 1; + const id = props.match.params.id; // change ^^^ that line and grab the id from the URL // You will NEED to add a dependency array to this effect hook - axios - .get(`http://localhost:5000/api/movies/${id}`) - .then(response => { - setMovie(response.data); - }) - .catch(error => { - console.error(error); - }); + axios + .get(`http://localhost:5000/api/movies/${id}`) + .then(response => { + setMovie(response.data); + }) + .catch(error => { + console.error(error); + }); + }, [props.match.params.id]); - },[]); - - // Uncomment this only when you have moved on to the stretch goals - // const saveMovie = () => { - // const addToSavedList = props.addToSavedList; - // addToSavedList(movie) - // } + // Uncomment this only when you have moved on to the stretch goals + const saveMovie = () => { + const addToSavedList = props.addToSavedList; + addToSavedList(movie); + }; if (!movie) { return
Loading movie information...
; } - const { title, director, metascore, stars } = movie; return (
-
-

{title}

-
- Director: {director} -
-
- Metascore: {metascore} -
-

Actors

- - {stars.map(star => ( -
- {star} -
- ))} + +
+ Save
-
Save
); -} +}; export default Movie; diff --git a/client/src/Movies/MovieCard.js b/client/src/Movies/MovieCard.js index ce8f4c15f3..81d76b2168 100644 --- a/client/src/Movies/MovieCard.js +++ b/client/src/Movies/MovieCard.js @@ -1,7 +1,24 @@ -import React from 'react'; +import React from "react"; const MovieCard = props => { - return; + return ( +
+

{props.movie.title}

+
+ Director: {props.movie.director} +
+
+ Metascore: {props.movie.metascore} +
+

Actors

+ + {props.movie.stars.map(star => ( +
+ {star} +
+ ))} +
+ ); }; export default MovieCard; diff --git a/client/src/Movies/MovieList.js b/client/src/Movies/MovieList.js index ab22a906a1..9b294578bf 100644 --- a/client/src/Movies/MovieList.js +++ b/client/src/Movies/MovieList.js @@ -1,52 +1,34 @@ -import React, { useState, useEffect } from 'react'; -import axios from 'axios'; +import React, { useState, useEffect } from "react"; +import MovieCard from "./MovieCard"; +import { Link } from "react-router-dom"; +import axios from "axios"; const MovieList = props => { - const [movies, setMovies] = useState([]) + const [movies, setMovies] = useState([]); useEffect(() => { const getMovies = () => { axios - .get('http://localhost:5000/api/movies') + .get("http://localhost:5000/api/movies") .then(response => { setMovies(response.data); }) .catch(error => { - console.error('Server Error', error); + console.error("Server Error", error); }); - } - + }; + getMovies(); }, []); - + return (
{movies.map(movie => ( - - ))} -
- ); -} - -function MovieDetails({ movie }) { - const { title, director, metascore, stars } = movie; - return ( -
-

{title}

-
- Director: {director} -
-
- Metascore: {metascore} -
-

Actors

- - {stars.map(star => ( -
- {star} -
+ + + ))}
); -} +}; export default MovieList; diff --git a/client/src/Movies/SavedList.js b/client/src/Movies/SavedList.js index 2c7d484cac..89f2a717a9 100644 --- a/client/src/Movies/SavedList.js +++ b/client/src/Movies/SavedList.js @@ -1,12 +1,19 @@ -import React from 'react'; +import React from "react"; +import { NavLink } from "react-router-dom"; const SavedList = props => (

Saved Movies:

{props.list.map(movie => ( - {movie.title} + + + {movie.title} + + ))} -
Home
+ +
Home
+
); diff --git a/client/src/index.css b/client/src/index.css index 80f0cec934..379727a4ab 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -5,6 +5,11 @@ body { background-color: #f2f2f2; } +a { + text-decoration: none; + color: darkslategray; +} + .movie-card { background-color: #fff; border: 0; diff --git a/client/src/index.js b/client/src/index.js index 9eac967ab4..b5f9a8147d 100644 --- a/client/src/index.js +++ b/client/src/index.js @@ -1,7 +1,13 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; +import React from "react"; +import ReactDOM from "react-dom"; +import { BrowserRouter as Router } from "react-router-dom"; -import './index.css'; -import App from './App'; +import "./index.css"; +import App from "./App"; -ReactDOM.render(, document.getElementById('root')); +ReactDOM.render( + + + , + document.getElementById("root") +);