Николай, привет! Несмотря на то, что ты все описал подробно, я тыкаю кодом компонента в разные места и довольно бездумно.
Компонент:

const DropdownMenu: React.FC<DropdownMenuProps> = ({ name, href, title, children, ...other }) => { /** * Здесь вся логика с citiesOpened, toggleMenuCities и т.п. */ const [citiesOpened, citiesOpenedSetter] = useState(false) const toggleMenuCities = useCallback(() => { citiesOpenedSetter(!citiesOpened) }, [citiesOpened]) useEffect(() => { if (!citiesOpened) { return } const closeCitiesOpenedEvent = () => { citiesOpenedSetter(false) } window.document.addEventListener('click', closeCitiesOpenedEvent) return () => { window.document.removeEventListener('click', closeCitiesOpenedEvent) } }, [citiesOpened]) const citiesList = useMemo<JSX.Element | null>(() => { //const coordsUrl = '' const citiesList: JSX.Element[] = [] cities.forEach((city) => { if (!city) { return } const { id, name, lat, lng, alias: uri } = city if (!lat || !lng) { return } const link = `/${uri}@` + [lat, lng, 12].join(',') citiesList.push( <li key={id}> <Link href={link}> <a style={{ color: '#000', }} // onClick={closeMenu} > {name} </a> </Link> </li> ) }) return <DropdownMenuStyled {...other} > <a href={href} title={title} onClick={toggleMenuCities} > {name} <i className="fa fa-angle-down"></i> </a> <DropdownMenuBoxStyled opened={citiesOpened}> {children} </DropdownMenuBoxStyled> </DropdownMenuStyled> },[])

Засунул его перед компонентом MainMenu - ругается, что export MainMenu не катит - можно только элемент верхнего уровня экспортировать, внутрь компонента MainMenu перенес - ошибка та же. Вообще вынести в отдельный файл всё это хозяйство надо?