Website-Suche

reactjs - Wie man eine Nextjs-Komponente mit benutzerdefinierten Eigenschaften als Children übergibt


Um eine Eigenschaft Auth zu meinen Komponenten hinzuzufügen. Ich habe ein Interface erstellt

interface AuthAppProps extends Omit<AppProps, "Component"> {
  Component: AppProps["Component"] & { Auth: boolean };
}

Damit ich aufführen kann

const App: React.FC<AuthAppProps> = (props) =>{
  const {
    Component,
    pageProps: { session, ...pageProps },
  } = props;
  return (
    <SessionProvider session={session}>
      {Component.Auth ? (
        <AuthGuard>
          <Component {...pageProps} />
        </AuthGuard>
      ) : (
        <Component {...pageProps} />
      )}
    </SessionProvider>
  );
}

Ich möchte diese Überprüfungslogik in eine andere Komponente verschieben, die ist

const AuthProvider: React.FC<AuthProviderProps> = (
  props: AuthProviderProps
) => {
  const { children: Component } = props;

  if (Component.Auth) {
    return <AuthGuard>{Component}</AuthGuard>;
  } else {
    return <>{Component}</>;
  }
};

Damit ich tun kann

 <SessionProvider session={session}>
      <AuthProvider>
        <Component {...pageProps} />
      </AuthProvider>
    </SessionProvider>

Aber da <Component {...pageProps} /> nur als React-Element und nicht als mein benutzerdefinierter Typ übergeben wird, gibt es mir einen Fehler, dass

Type 'Element' is not assignable to type '(NextComponentType<NextPageContext, any, {}> & { Auth: boolean; }) & ReactNode'

Wie kann ich auf Auth für meine Komponente zugreifen, wenn sie als Kinder übergeben wird? Ist das möglich?

Aktualisieren

interface AuthProviderProps{
    children: AuthAppProps
}