mirror of
https://github.com/Nezumi-2711/react-training.git
synced 2026-09-22 13:38:51 +00:00
Updated code
This commit is contained in:
@@ -51,20 +51,35 @@ const average = (arr) =>
|
|||||||
arr.reduce((acc, cur, i, arr) => acc + cur / arr.length, 0);
|
arr.reduce((acc, cur, i, arr) => acc + cur / arr.length, 0);
|
||||||
|
|
||||||
export default function App() {
|
export default function App() {
|
||||||
|
const [movies, setMovies] = useState(tempMovieData);
|
||||||
|
const [watched, setWatched] = useState(tempWatchedData);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<NavBar />
|
<NavBar>
|
||||||
<Main />
|
<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 (
|
return (
|
||||||
<nav className="nav-bar">
|
<nav className="nav-bar">
|
||||||
<Logo />
|
<Logo />
|
||||||
<Search />
|
{children}
|
||||||
<NumResults />
|
|
||||||
</nav>
|
</nav>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -91,42 +106,54 @@ function Search() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function NumResults() {
|
function NumResults({ movies }) {
|
||||||
return (
|
return (
|
||||||
<p className="num-results">
|
<p className="num-results">
|
||||||
Found <strong>X</strong> results
|
Found <strong>{movies.length}</strong> results
|
||||||
</p>
|
</p>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Main() {
|
function Main({ children }) {
|
||||||
return (
|
return <main className="main">{children}</main>;
|
||||||
<main className="main">
|
|
||||||
<ListBox />
|
|
||||||
<WatchedBox />
|
|
||||||
</main>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function ListBox() {
|
function Box({ children }) {
|
||||||
const [isOpen1, setIsOpen1] = useState(true);
|
const [isOpen, setIsOpen] = useState(true);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="box">
|
<div className="box">
|
||||||
<button
|
<button className="btn-toggle" onClick={() => setIsOpen((open) => !open)}>
|
||||||
className="btn-toggle"
|
{isOpen ? "–" : "+"}
|
||||||
onClick={() => setIsOpen1((open) => !open)}
|
|
||||||
>
|
|
||||||
{isOpen1 ? "–" : "+"}
|
|
||||||
</button>
|
</button>
|
||||||
{isOpen1 && <MovieList />}
|
{isOpen && children}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function MovieList() {
|
// function WatchedBox() {
|
||||||
const [movies, setMovies] = useState(tempMovieData);
|
// 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 (
|
return (
|
||||||
<ul className="list">
|
<ul className="list">
|
||||||
{movies?.map((movie) => (
|
{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 }) {
|
function WatchedSummary({ watched }) {
|
||||||
const avgImdbRating = average(watched.map((movie) => movie.imdbRating));
|
const avgImdbRating = average(watched.map((movie) => movie.imdbRating));
|
||||||
const avgUserRating = average(watched.map((movie) => movie.userRating));
|
const avgUserRating = average(watched.map((movie) => movie.userRating));
|
||||||
|
|||||||
Reference in New Issue
Block a user