javascript - hvordan gjøre en Next.js "Link" sin "href"-egenskap valgfri


Jeg har laget Next.js Link som en tilpasset React-funksjon med TypeScript siden 'href'-egenskapen er nødvendig for 'Link' for å kunne bruke den hvor som helst jeg vil. Så jeg kunne ikke bruke den som en knapp som fungerer som en sendeknapp i skjemaer.

import NextLink, { LinkProps } from "next/link";
import { HTMLProps, FC } from "react";

export const LinkButton: FC<LinkProps & HTMLProps<HTMLAnchorElement>> = ({
  as,
  children,
  href,
  replace,
  scroll,
  shallow,
  passHref,
  className,
  title,
  onClick,
  ...rest
}) => (
  <NextLink
    as={as}
    href={href}
    passHref={passHref}
    replace={replace}
    scroll={scroll}
    shallow={shallow}
  >
    <a className={className} {...rest}>
      {children || title}
    </a>
  </NextLink>
);

og når jeg brukte det et sted ga det meg denne feilen

<LinkButton onClick={() => alert("hello")} title="Find Events" />

Property 'href' is missing in type '{ onClick: () => void; title: string; }' but required in 
type 'LinkProps'.

hvordan kunne jeg gjøre href valgfritt da hvis det ikke blir kalt, kan jeg betinget legge til en "" tag i stedet for "" tag

Svar #1

Du kan utelate href-egenskapen og definere den som valgfri:

Omit<LinkProps & HTMLProps<HTMLAnchorElement>, "href"> & { href?: string }

og deretter inne i komponentens props-destrukturering må du spesifisere standardverdi

...
href = "",
...