1. Надо смотреть git status То, что у тебя коммит локально есть, это еще не значит, что ты его обязательно вылил. Да и ветка может быть не та. 2. Сделай git push --all Это выльет все ветки все коммиты в гитхаб. Там можно попробовать найти.

Николай ,привет! Не подскажешь, как найти коммит, опять куда-то закинул - поди пойми куда( dima@dima-Lenovo-ideapad-720-15IKB:~/docker/docker-pivkarta/prisma-cms/pivkarta.ru-2$ git log commit b2ad816b2f16386187f2b9d5f0acf5463b484fc7 (HEAD -> master) Author: Dima linklib.web@yandex.ru Date: Sun Aug 8 09:34:08 2021 +0300 Change lightbox component Я здесь поменял компонент, но почему-то посыпались ошибки с apollo... Мне бы этот коммит как-то откатить и разбираться с вылезшими ошибками, но не знаю, можно ли это сделать.

Отправил ПР: https://github.com/Pivkarta/pivkarta.ru-2/pull/13 1. Ты должен уяснить, что не все реакт-компоненты умеют в SSR (Server-side rendering). Выбранный тобой компонент react-lightbox-component как раз один из них. То есть при прямом подключении react-lightbox-component как есть, возникает 500 ошибка при обновлении страницы (потому что next-js - это SSR-приложение и оно пытается выполнить реакт на сервере). В итоге приходится подключать через next/dynamic с сопутствующими танцами с бубнами (в коде найдешь комментарии). 2. У тебя в целом он работал (если динамически на фронте обновить), просто стили не были подключены. А прос стили как раз ничего нет в "документации" компонента (которой по сути и нету). Поэтому второе, что ты должен уяснить - не все реакт-компоненты одинаково хороши (это касается как качества самого кода, так и документации). Поэтому, когда ты какой-то компонент пишешь, смотри на гитхабе как часто он обновляется, сколько там issue и т.п. Вот этот компонент уже 3 года не обновлялся, это как бы уже должно наводить на мысль, что он заброшенный.

  1. И обращай внимание на JS-ошибки в дев-тулз. Их, по-хорошему, не должно быть. А у тебя вот такое: Warning: Each child in a list should have a unique "key" prop. Загугли и изучи тему ключей в реакте. Про ключи спрашивают на каждом собеседовании (как джунов, так и сеньоров). Если ты не понимаешь в реакте ключей и пренебрегаешь ими - ты не можешь полноценно программировать реакт-компоненты.
  1. Вот здесь ты затупил с типом: https://github.com/Pivkarta/pivkarta.ru-2/blob/c9a23e5d77f9c54dcd915760145ba7e211d150cc/src/pages/Beers/Beer/BeerPlaces/index.tsx#L41 Ты как объявил? и присваиваешь сразу по умолчанию ему массив. А PlacesbeerViewProps['places'] это что за тип? PlacesbeerQuery. То есть это Объект. Не массив объектов, а именно объект. А ты присваиваешь пустой массив. Конечно он будет ругаться. Он тебе и выдает: Property 'mapPlacesConnection' is missing in type 'never[]' but required in type 'PlacesbeerQuery' То есть в объекте PlacesbeerQuery есть обязательное свойство - mapPlacesConnection, которое ты не передаешь (его нет в объекте Массив). Тебе нужно было как минимум вот так: Но и тут у тебя не все ОК. У тебя уже в респонс прилетает PlacesbeerQuery, но ты пытаешься еще создать массив places, опять-таки из этих PlacesbeerQuery. То есть по сути из одного PlacesbeerQuery ты хочешь получить массив PlacesbeerQuery. Не логично, правда? А на самом деле PlacesbeerQuery у тебя содержит edges: node[]. То есть тебе надо выдернуть именно конечные ноды и набить их в массив places. Но ты не сможешь просто так тип массиву places задать, потому что у тебя GraphQL-запрос написан одной портянкой без разбива на фрагменты. Обрати внимание как это сделано у меня: вот есть фрагмент company, и вот здесь я его использую в запросе. Такие фрагменты генератор кода выносит в отдельные типы с суффиксом Fragment. К примеру вот CompanyFragment. Вот это уже позволяет использовать тип самого объекта компании: https://github.com/Pivkarta/pivkarta.ru-2/blob/c9a23e5d77f9c54dcd915760145ba7e211d150cc/src/pages/Companies/Company/interfaces.ts#L5 А тебе в твоем случае не за чем вообще набивать массив заведений, а просто можно перечислить полученный результат (там типы итак будут поняты). Но если ты хочешь писать внутренние компоненты и четко указывать что на вход должно прийти, то обязательно надо разбить на фрагменты (только нельзя иметь два фрагмента с одним и тем же именем).

Дима, привет! 1. Вот ты getVariables как есть объявил внутри компонента. В большинстве случаев (как и здесь) - это очень не хорошо. При каждом ререндеринге компонента будет создаваться новая функция и будет ререндериться HTML, зависящий от нее. Или выносить надо отдельно за пределы компонента (чтобы это реальная константа была на постоянку, как это сделано в других местах), или хотя бы оборачивать в useMemo(), чтобы заморозить переменную.