kristof22122 / Ex2-React-Program1

0 stars 0 forks source link

review movie-reviews #8

Closed shevchuknine closed 2 years ago

shevchuknine commented 2 years ago

в URL перед идентификатором не должно быть двоеточия. в задании таким образом указан динамический параметр :id отдельные страницы должны выглядеть как полноценные страницы, а не как попапы с крестиком https://github.com/kristof22122/Ex2-React-Program1/blob/561ba27c2e61abf880bb7b3ba960080e77ebcac0/movie-reviews-6-1/src/api.js#L8 асинхронный код строим через промисы, baseURL это https://api.themoviedb.org/3, все остальное конкретный url в каждом запросе, параметры через params, единый обработчик ответа (чтобы не дублировать везде res.data.results). ты можешь изначально создать апи клиент через axios.create, передать туда baseUrl, а потом дополнять его в отдельных запросах идея динамического роутинга в том, что ты строишь path с параметром path={"/movies/:id"}. когда выполняешь переход на эту страницу через Link, то определяешь конкретный id для подстановки. в дальнейшем идентификатор выбранного фильма ты уже читаешь из URL (useParams в react-router). в таком случае состояние selectMovieId тебе в принципе не нужно. редирект нужно реализовать, но не средствами . в 6-м роутере есть для этого другие решения

shevchuknine commented 2 years ago

список актеров и ревью вываливается за высоту страницы https://github.com/kristof22122/Ex2-React-Program1/blob/17d0cc561dd0b56e1b96b52c2d0e4be7ff6ed200/movie-reviews-6-1/src/components/CustomPagination/CustomPagination.js#L20 похожие действия со страницей имеет смысл выполнять в родительском копмоненте, паганция выступает просто формой, которая изменяет страницу. а в родительском компоненте уже имеет смысл сделать скролл вверх на основании изменения страницы https://github.com/kristof22122/Ex2-React-Program1/blob/17d0cc561dd0b56e1b96b52c2d0e4be7ff6ed200/movie-reviews-6-1/src/components/MovieCastInfo/MovieCastInfo.js#L53 запросы предпочтительнее разделять не по переиспользованию кода, а логически. т.е. запросы на актеров и ревью должны быть разными, несмотря на то, что имеют много общего кода. переиспользуй колбек обработки данных для этих запросов, чтобы уменьшить дублирование https://github.com/kristof22122/Ex2-React-Program1/blob/17d0cc561dd0b56e1b96b52c2d0e4be7ff6ed200/movie-reviews-6-1/src/components/MovieReviewInfo/MovieReviewInfo.js#L56 потенциальное место для ошибки, если в результате придет не массив https://github.com/kristof22122/Ex2-React-Program1/blob/17d0cc561dd0b56e1b96b52c2d0e4be7ff6ed200/movie-reviews-6-1/src/components/MovieAllInfo/MovieAllInfo.js#L9-L10 зачем приводить к числу? используй деструктуризацию для доступа к id

shevchuknine commented 2 years ago

контейнер App имеет высоту 100vh, контент вываливается из него. подредактируй это https://github.com/kristof22122/Ex2-React-Program1/blob/3382a0edc040e8693a1b0c981870ca296eb435ca/movie-reviews-6-1/src/api.js#L41-L47 предпочтительнее их разделять, а переиспользовать колбеки для then. у тебя разные ответы в этих двух запросах из-за чего обработку ответа приходится выносить в компонент https://github.com/kristof22122/Ex2-React-Program1/blob/3382a0edc040e8693a1b0c981870ca296eb435ca/movie-reviews-6-1/src/components/MovieReviewInfo/MovieReviewInfo.js#L53-L55 в компоненте ты везде используешь movieReviewInfo.results, значит имеет смысл устанавливать results (предварительно достав его в отдельном апи запросе) прямиком в movieReviewInfo. проверку на массив незачем хранить в состоянии, ее можно сделать перед рендером компонента _ в остальных компонентах, в которых используется movieId его так же можно доставать из useParams, чтобы не передавать пропсами