React Router NavLink that uses an active prop rather than css class.
see govuk-react/govuk-react#423
e.g. when you want to use a CSSinJS library that expects an active prop but you're using React Router 😢
npm install nav-link-with-prop --save
Say you have a dumb/UI/styled component, such as:
const MyNavAnchor = styled(({
as: T = 'a',
...props
}) => <T {...props} />)({
textDecoration: 'blink',
color: 'blue',
}, ({ active }) => (active && {
color: 'red',
}));
Note that you need to provide the 'as' prop. This is provided by styled-components by default but needs to be done manually (as per code sample above) for emotion.
You can then use one of the following approaches:
See as-nav-link.
A bit uglier:
import NavLinkWithProp from 'nav-link-with-prop';
const MyNavLink = ({ children, ...props }) => (
<NavLinkWithProp {...props}>
{innerProps => <MyNavAnchor as={Link} {...innerProps}>{children}</MyNavAnchor>}
</NavLinkWithProp>
);