Николай ,привет! Не подскажешь, как найти коммит, опять куда-то закинул - поди пойми куда( 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 года не обновлялся, это как бы уже должно наводить на мысль, что он заброшенный.
Отправил ПР: https://github.com/Pivkarta/pivkarta.ru-2/pull/12 Сейчас лайтбокс гляну.
Дима, привет! 1. Вот ты getVariables как есть объявил внутри компонента. В большинстве случаев (как и здесь) - это очень не хорошо. При каждом ререндеринге компонента будет создаваться новая функция и будет ререндериться HTML, зависящий от нее. Или выносить надо отдельно за пределы компонента (чтобы это реальная константа была на постоянку, как это сделано в других местах), или хотя бы оборачивать в useMemo(), чтобы заморозить переменную.