ウェブサイト検索

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
}