使用我的道具的正確行動鏈是什么onBackButtonPress?: () => void;?現在打字稿顯示 onPress 的錯誤 -
Type '(() => void) | undefined' is not assignable to type '() => void'.
Type 'undefined' is not assignable to type '() => void'.
我是否需要在 IconButton 和 app.tsx Header 中為道具輸入完全不同的內容?
type HeaderProps = {
onBackButtonPress?: () => void;
};
export function Header({ onBackButtonPress }}: HeaderProps) {
return (
<View>
<IconButton onPress={onBackButtonPress} />
</View>
);
}
app.tsx 檔案
<Header onBackButtonPress={() => null} />
uj5u.com熱心網友回復:
問題是onPresspropIconButton需要接收 type () => void。但是,onBackButtonPress被標記為可選,因此它可能是undefined. 這兩種型別不匹配。
為了解決這個問題,要么允許接收onPress,要么提供一個虛擬函式,如果是或不標記為可選。IconButtonundefinedonBackButtonpressundefinedonBackButtonPress
未標記為可選
type HeaderProps = {
onBackButtonPress: () => void;
};
在這種情況下,Header組件無法接收未定義的物件onBackButtonPress。
創建虛擬函式
onPress={onBackButtonPress ? onBackButtonPress : () => {}} />
onBackButtonPress如果未定義,這將不會在 onPress 上執行任何操作。
更改型別IconButton
type IconButtonProps = {
onPress?: () => void
}
export IconButton(props: IconButtonProps) {
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/503800.html
上一篇:使用sessionStorage時UseEffect不會觸發setState
下一篇:根據輸入動態匯入React組件
