I was trying to use #{id}
to move user to an element with the given id, but the href somehow always get its hashtag converted into %23. Is there a way to prevent this?
UPDATE: This is one of the components that have that issue. When the item.href
contains "#", it would become %23
on rendering. It was used in a drop down menu component.
export interface NavItemType {
id: string;
name: string;
href: string | "#" | "/#";
toId?: string;
targetBlank?: boolean;
children?: NavItemType[];
megaMenu?: MegamenuItem[];
type?: "dropdown" | "megaMenu" | "none";
}
const renderDropdownMenuNavlink = (item: NavItemType) => {
return (
<Link
href={{
pathname: item.href || undefined,
}}
passHref
>
<a
target={item.targetBlank ? "_blank" : undefined}
rel="noopener noreferrer"
className={
"flex items-center font-normal text-neutral-6000 dark:text-neutral-400 py-2 px-4 rounded-md hover:text-neutral-700 hover:bg-neutral-100 dark:hover:bg-neutral-800 dark:hover:text-neutral-200" +
(router.pathname === item.href ? "!font-medium !text-neutral-900 dark:!text-neutral-100" : "")
}
>
{item.name}
{item.type && (
<ChevronDownIcon
className="ml-2 h-4 w-4 text-neutral-500"
aria-hidden="true"
/>
)}
</a>
</Link>
);
};
NextJS uses the native UrlObject
from node
or browser
if not SSR.
pahname
is specifically used for path name so anything not accepted there will be encoded, what you might need is hash
but you might also be able to use your item.href
directly into href
prop of your Link
More info here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With