如何使用Flow扩展React Native组件的道具?

时间:2017-09-19 09:39:55

标签: javascript reactjs react-native types flowtype

我在我的React Native(0.54.1)项目中使用Flow(0.48.3)。我创建了一个名为PrimaryButton的组件,它包装了一个原生的TouchableOpacity组件。我想使用一些自定义道具以及TouchableOpacity的整套道具来键入组件。

如何访问/扩展属于TouchableOpacity的道具? (或任何本机/内置的React Native组件)

在以下示例中,我尝试了解如何填充PROPS_FROM_TOUCHABLE_OPACITY

type Props = PROPS_FROM_TOUCHABLE_OPACITY & {
    title: string,
};

const PrimaryButton = ({ title, ...rest }: Props) => (
    <TouchableOpacity {...rest}>
        <View>
            <Text>{title}</Text>
        </View>
    </TouchableOpacity>
);
为简洁起见,

简化了组件

1 个答案:

答案 0 :(得分:0)

您可以使用$PropertyType来获取对象的某些属性的类型。然后,您可以像这样定义Props类型:

type Props = $PropertyType<TouchableOpacity, 'props'> & {
    title: string,
};