Пока я делаю, вопрос: ты вот здесь точно все понимаешь? Каждую конструкцию? https://github.com/Pivkarta/pivkarta.ru-2/blob/f658013e24f93ae1605b6eeb16296785036ea2c6/src/pages/_App/Layout/MainMenu/index.tsx#L46-L60
Есть: https://github.com/Pivkarta/pivkarta.ru-2/commit/f658013e24f93ae1605b6eeb16296785036ea2c6 Единственное, чего не понял, это как в стили запихать это: display: citiesOpened ? 'block' : 'none',
Технически работает. Но результат надо улучшить. 1. Избавиться от style={...}, перенести стили в styles.ts 2. Навесить на document обработчик, чтобы по клику меню закрывалось. А то сейчас только по клику в сам корневой пункт меню.
Вроде сделаал: https://github.com/Pivkarta/pivkarta.ru-2/commit/e577598920a90afe36aff5b9a6b024b77b9407ef Посмотришь?
Оказалось ,не включил Eslint... Про хуки понял - исправляюсь
В общем, поправь хуки и должно заработать (у меня заработало, но не буду выливать, тебе надо самому попытаться).
Если заработает, то он тебе покажет вот такое: Собственно, эту ошибку и в браузере видно, и на ошибки в браузере обязательно надо обращать внимание. Это распространенная ошибка, которой не должно быть: все хуки должны выполняться обязательно и до их выполнения никак логика не должна обрываться по каким-либо условиям. У тебя же ошибка в том, что useState() прописан внутри useMemo(). То есть хуки внутри хуков тоже нельзя прописывать.
Eslint надо ставить. И надо потом убедиться, что он активен: Если перечеркнут, надо по нему кликнуть и во всплывашке разрешить его (Allow).