【发布时间】:2021-08-27 02:27:45
【问题描述】:
我使用 Styled 组件和 Typescript 创建了一个可重复使用的按钮。我让onPress 无效。我正在使用这个按钮到headStyles。 HeaderStyles 有一个道具名称headerLeft。 headerLeft's props' onPress 是可选的或未定义的。当我将此道具传递给我的 Button 时,我得到了预期的 Typescript 错误。这是错误:Type '(() => void) | undefined' is not assignable to type '() => void'. Type 'undefined' is not assignable to type '() => void'.ts(2322)。有什么办法让headerLeft props onPress 无效?
这是我的可重复使用的 Button 组件:
import React from 'react';
import styled from 'styled-components/native';
type Props = {
onPress: () => void;
};
const BackButtonContainer = styled.TouchableOpacity`
padding-vertical: 16px;
padding-horizontal: 24px;
`;
const Button = ({ onPress }: Props) => {
return (
<BackButtonContainer
onPress={onPress}>
</BackButtonContainer>
);
};
export default Button;
这是标题样式
import { StackNavigationOptions } from '@react-navigation/stack';
import React from 'react';
import Button from './buttons;
export const headerStyles: StackNavigationOptions = {
headerStyle: {
elevation: 0,
borderBottomWidth: 0,
shadowOffset: { height: 0, width: 0 },
},
headerTitleAlign: 'center',
headerTintColor: colors.greyGradient[800],
headerLeft: (props) =>
props.canGoBack ? <Button onPress={props.onPress} /> : null, //In here I am getting typescript error
};
【问题讨论】:
标签: typescript react-native touchableopacity onpress