Я не особенно заинтересован в подходе &.active
, если вы пытаетесь создать стилевой компонент, независимый от маршрутизатора, поэтому я создал asNavLink
, чтобы справиться с этим:
npm install as-nav-link --save
Учитывая компонент:
const MyNavAnchor = styled(({
as: T = 'a',
active, // destructured so it is not passed to anchor in props
...props
}) => <T {...props} />)({
textDecoration: 'blink',
color: 'blue',
}, ({ active }) => (active && {
color: 'red',
}));
Вы можете использовать это так:
import asNavLink from 'as-nav-link';
const MyNavLink = asNavLink(config)(MyNavAnchor);
И он передаст активную опору вашему стилизованному компоненту.
config
является необязательным и может включать в себя функцию isActive
(согласно NavLink ReactRouter) и строку activeProp
(имя пропуска, которое передается вашему компоненту).