Updated code

This commit is contained in:
2023-10-08 20:40:14 +07:00
parent 756103b07e
commit 166fe024ed
+51 -46
View File
@@ -51,20 +51,35 @@ const average = (arr) =>
arr.reduce((acc, cur, i, arr) => acc + cur / arr.length, 0);
export default function App() {
const [movies, setMovies] = useState(tempMovieData);
const [watched, setWatched] = useState(tempWatchedData);
return (
<>
<NavBar />
<Main />
<NavBar>
<Search />
<NumResults movies={movies} />
</NavBar>
<Main>
<Box>
<MovieList movies={movies} />
</Box>
<Box>
<WatchedSummary watched={watched} />
<WatchMovieList watched={watched} />
</Box>
</Main>
</>
);
}
function NavBar() {
function NavBar({ children }) {
return (
<nav className="nav-bar">
<Logo />
<Search />
<NumResults />
{children}
</nav>
);
}
@@ -91,42 +106,54 @@ function Search() {
);
}
function NumResults() {
function NumResults({ movies }) {
return (
<p className="num-results">
Found <strong>X</strong> results
Found <strong>{movies.length}</strong> results
</p>
);
}
function Main() {
return (
<main className="main">
<ListBox />
<WatchedBox />
</main>
);
function Main({ children }) {
return <main className="main">{children}</main>;
}
function ListBox() {
const [isOpen1, setIsOpen1] = useState(true);
function Box({ children }) {
const [isOpen, setIsOpen] = useState(true);
return (
<div className="box">
<button
className="btn-toggle"
onClick={() => setIsOpen1((open) => !open)}
>
{isOpen1 ? "" : "+"}
<button className="btn-toggle" onClick={() => setIsOpen((open) => !open)}>
{isOpen ? "" : "+"}
</button>
{isOpen1 && <MovieList />}
{isOpen && children}
</div>
);
}
function MovieList() {
const [movies, setMovies] = useState(tempMovieData);
// function WatchedBox() {
// const [watched, setWatched] = useState(tempWatchedData);
// const [isOpen2, setIsOpen2] = useState(true);
// return (
// <div className="box">
// <button
// className="btn-toggle"
// onClick={() => setIsOpen2((open) => !open)}
// >
// {isOpen2 ? "" : "+"}
// </button>
// {isOpen2 && (
// <>
// <WatchedSummary watched={watched} />
// <WatchMovieList watched={watched} />
// </>
// )}
// </div>
// );
// }
function MovieList({ movies }) {
return (
<ul className="list">
{movies?.map((movie) => (
@@ -151,28 +178,6 @@ function Movie({ movie }) {
);
}
function WatchedBox() {
const [watched, setWatched] = useState(tempWatchedData);
const [isOpen2, setIsOpen2] = useState(true);
return (
<div className="box">
<button
className="btn-toggle"
onClick={() => setIsOpen2((open) => !open)}
>
{isOpen2 ? "" : "+"}
</button>
{isOpen2 && (
<>
<WatchedSummary watched={watched} />
<WatchMovieList watched={watched} />
</>
)}
</div>
);
}
function WatchedSummary({ watched }) {
const avgImdbRating = average(watched.map((movie) => movie.imdbRating));
const avgUserRating = average(watched.map((movie) => movie.userRating));