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
}