reactjs - Nextjs コンポーネントをカスタムプロパティ付きで Children として渡す方法
コンポーネントにプロパティ Auth を追加するために、インターフェースを作成しました
interface AuthAppProps extends Omit<AppProps, "Component"> {
Component: AppProps["Component"] & { Auth: boolean };
}
私が演奏できるように
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>
);
}
このチェックロジックを別のコンポーネントに移動したいです
const AuthProvider: React.FC<AuthProviderProps> = (
props: AuthProviderProps
) => {
const { children: Component } = props;
if (Component.Auth) {
return <AuthGuard>{Component}</AuthGuard>;
} else {
return <>{Component}</>;
}
};
私ができるように
<SessionProvider session={session}>
<AuthProvider>
<Component {...pageProps} />
</AuthProvider>
</SessionProvider>
しかし、<Component {...pageProps} /> は私のカスタム型としてではなく、Reactの要素としてのみ渡されるため、次のようなエラーが出ます
Type 'Element' is not assignable to type '(NextComponentType<NextPageContext, any, {}> & { Auth: boolean; }) & ReactNode'子として渡すときに、コンポーネントの認証にどうアクセスできますか?可能ですか?
更新
interface AuthProviderProps{
children: AuthAppProps
}