[英]TypeScript React SFC children props type error
我定義了以下無狀態功能組件:
import { SFC } from "react";
type ProfileTabContentProps = {
selected: boolean;
};
const ProfileTabContent: SFC<ProfileTabContentProps> = ({ selected, children }) => selected && children;
無法編譯,並出現以下錯誤:
Type '({ selected, children }: ProfileTabContentProps & { children?: ReactNode; }) => ReactNode' is not assignable to type 'StatelessComponent'.
Type 'ReactNode' is not assignable to type 'ReactElement | null'.
Type 'undefined' is not assignable to type 'ReactElement | null'.
快速搜索相關問題都會給出相同的答案,這與我所做的非常相似。 我想念什么?
您的問題是, selected && children
計算結果為React.ReactNode
,如果您檢查類型,則為聯合類型:
type ReactNode = ReactChild | ReactFragment | ReactPortal | boolean | null | undefined;
但是, React.SFC
必須返回ReactElement
,該函數定義的定義是:
(props: P & { children?: ReactNode }, context?: any): ReactElement<any> | null;
我認為您已經看到[truthy] && [render me]
模式使用了很多,但是通常是在一個較大的TSX組件內部,允許使用React.ReactNode
如果您想保持簡單,可以這樣做:
const ProfileTabContent: SFC<ProfileTabContentProps> = ({ selected, children }) =>
<>{selected && children}</>
這只是將您的表達式包含在React.ReactFragment
的簡寫中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.