為什么我收到此錯誤訊息:
Cannot find name "T"
代碼:
const List: React.FC<T> = ({ items, render }: {
items: T[];
render: (item: T) => React.ReactNode;
}) => {
return (
<View>
{ items.map((el ,i) => (
<Text key={i}>{el}</Text>
)) }
</View>
)
}
我做錯了什么?
uj5u.com熱心網友回復:
接受的泛型React.FC用于鍵入 props 物件。因此,您將創建一個接受其自己的泛型的介面,而不是行內輸入您的道具:
interface ListProps<T = unknown> {
items: T[];
render: (item: T) => React.ReactNode;
}
然后宣告您將傳遞給ListProps泛型的介面:
interface YourGenericType {
el: string;
}
要將這兩個介面與您的組件一起使用:
const List: React.FC<ListProps<YourGenericType>> = ({ items, render }) => {
return (
<View>
{items.map((el, i) => (
<Text key={i}>{el}</Text>
))}
</View>
);
};
編輯:我還要補充一點,除非您需要訪問隱式children型別,否則建議您不要React.FC用作函式型別簽名。請參閱此處了解更多資訊。考慮到這一點,我會像這樣鍵入您的 List 組件:
const List = ({ items, render }: ListProps<YourGenericType>) => {
return (
<View>
{items.map((el, i) => (
<Text key={i}>{el}</Text>
))}
</View>
);
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/433051.html
上一篇:從另一個鍵的值中獲取物件的值
下一篇:創建泛型集合函式
