import { LocationDescriptor, LocationDescriptorObject } from "history"; import * as React from "react"; import { match, NavLink, Route } from "react-router-dom"; type Props = React.ComponentProps & { children?: ( match: | match<{ [x: string]: string | undefined; }> | boolean | null, location: LocationDescriptorObject ) => React.ReactNode; /** * If true, the tab will only be active if the path matches exactly. */ exact?: boolean; /** * CSS properties to apply to the link when it is active. */ activeStyle?: React.CSSProperties; /** * The path to match against the current location. */ to: LocationDescriptor; }; function NavLinkWithChildrenFunc( { to, exact = false, children, ...rest }: Props, ref?: React.Ref ) { return ( {({ match, location }) => ( {children ? children( rest.isActive ? rest.isActive(match, location) : match, location ) : null} )} ); } export default React.forwardRef( NavLinkWithChildrenFunc );