javascript - Hur tilldelar man olika värden till href-elementet i NavLink i Chakra Navbar?
Jag vill ge href-elementet i NavLink-komponenten som värde för Links-arrayen. Kan jag ge ett värde till href med hjälp av map-funktionen?
För att vara tydlig, skulle jag vilja ge href-elementen i NavLink-funktionen värdena 'Home', 'Projects' och 'Careers'. (Inte "#")
Länkarray
const Links = ['Home', 'Projects', 'Careers'];
NavLink-funktion
const NavLink = ({ children }: { children: ReactNode }) => (
<Link
px={2}
py={1}
rounded={'md'}
_hover={{
textDecoration: 'none',
bg: useColorModeValue('#00afff', '#00afff'),
}}
href={'#'}
>
{children}
</Link>
);
Använda komponenter
<HStack spacing={8} alignItems={'center'}>
<NavBarLogo src= {HdhLogo} />
<HStack
as={'nav'}
spacing={4}
display={{ base: 'none', md: 'flex' }}>
{Links.map((link) => (
<NavLink key={link}>{link}</NavLink>
))}
</HStack>
</HStack>
Svar #1
Eftersom Links-arrayen är en array av strängar
const Links = ['Home', 'Projects', 'Careers'];
som skickas som barn
{Links.map((link) => (
<NavLink key={link}>
{link}
</NavLink>
))}
Skicka bara children-egenskapen till href-egenskapen
const NavLink = ({ children }: { children: ReactNode }) => (
<Link
px={2}
py={1}
rounded={'md'}
_hover={{
textDecoration: 'none',
bg: useColorModeValue('#00afff', '#00afff'),
}}
href={children}
>
{children}
</Link>
);
Det kan dock vara bättre att exponera en href-egenskap på NavLink-komponenten.
const NavLink = ({ children, href }: { children: ReactNode, href: string }) => (
<Link
px={2}
py={1}
rounded={'md'}
_hover={{
textDecoration: 'none',
bg: useColorModeValue('#00afff', '#00afff'),
}}
href={href}
>
{children}
</Link>
);
...
{Links.map((link) => (
<NavLink key={link} href={link}>
{link}
</NavLink>
))}
