Movie-App/movie-app/src/pages/Movie.js

69 lines
1.9 KiB
JavaScript
Raw Normal View History

2025-01-03 04:03:23 +00:00
import React, { useState, useEffect } from "react";
import "./Movie.css";
function Movie({ filters }) {
const [movieList, setMovieList] = useState([]);
const [page, setPage] = useState(1);
const getMovie = (pageNumber, filters) => {
const { genre, year, rating } = filters;
let url = `https://api.themoviedb.org/3/discover/movie?api_key=59690efd14e375225c4531fcdced2901&page=${pageNumber}`;
if (genre) url += `&with_genres=${genre}`;
if (year) url += `&year=${year}`;
if (rating[0] && rating[1])
url += `&vote_average.gte=${rating[0]}&vote_average.lte=${rating[1]}`;
fetch(url)
.then((res) => res.json())
.then((json) => setMovieList(json.results));
};
useEffect(() => {
getMovie(page, filters);
}, [page, filters]);
const handleNextPage = () => {
setPage((prevPage) => prevPage + 1);
};
const handlePreviousPage = () => {
if (page > 1) {
setPage((prevPage) => prevPage - 1);
}
};
return (
<><div className="movie-container">
{movieList.map((movie) => (
<div key={movie.id} className="movie-card">
<img
className="movie-poster"
src={`https://image.tmdb.org/t/p/w500${movie.poster_path}`}
alt={movie.title} />
<div className="movie-details">
<h3 className="movie-title">{movie.title}</h3>
<p className="movie-overview">{movie.overview}</p>
</div>
</div>
))}
<div className="pagination-controls">
<button
className="pagination-button"
onClick={handlePreviousPage}
disabled={page === 1}
>
Previous
</button>
<button className="pagination-button" onClick={handleNextPage}>
Next
</button>
</div>
</div></>
);
}
export default Movie;