1. Зачем смешиваете классовые и функциональные компоненты?
2. Вынесите эти участки кода в отдельные файлы
const navbarLinkGenerator = (linksList, toggleMenuHandler) => {
return linksList.map(({ to, label, exact }, index) => {
return (
<li key={`navlink-${index}`}>
<NavLink to={to} exact={exact} onClick={toggleMenuHandler} activeClassName={cssClasses.active}>{ label }</NavLink>
</li>
);
});
};
const links = [
{ to: '/', label: 'Main', exact: true },
{ to: '/faq', label: 'Faq', exact: false },
{ to: '/contacts', label: 'Contacts', exact: false },
];
3. Лучше переписать так:
было:
const navbarLinkGenerator = (linksList, toggleMenuHandler) => {
return linksList.map(({ to, label, exact }, index) => {
return (
<li key={`navlink-${index}`}>
<NavLink to={to} exact={exact} onClick={toggleMenuHandler} activeClassName={cssClasses.active}>{ label }</NavLink>
</li>
);
});
};
стало:
const navbarLinkGenerator = (linksList, toggleMenuHandler) => {
return (
{linksList.map(({ to, label, exact }, index) =>
<li key={`navlink-${index}`}>
<NavLink to={to} exact={exact} onClick={toggleMenuHandler} activeClassName={cssClasses.active}>{ label }</NavLink>
</li>
)};
)};
UPD:
4. Лучше переписать с useEffect:
useEffect(() => {
if (isMenuOpen) {
navbarLinksClasses.push(cssClasses.show);
}
}, [isMenuOpen])