我正在尝试将color
道具添加到styled-components
包装的TouchableOpacity
中,并获得流程以正确键入它。
type TouchableOpacityProps = $PropertyType<Element<TouchableOpacity>, "props">;
type ButtonTouchableProps = { color: string } & TouchableOpacityProps;
const ButtonTouchable: ComponentType<ButtonTouchableProps> = styled.TouchableOpacity`
background-color: ${props => props.color};
`;
但是,在使用<ButtonTouchable color="#CCCCCC" />
时,我得到了以下流量警告:
无法创建
ButtonTouchable
元素,因为属性color
为 对象类型[1]中缺少,但在道具[2]中存在。 (参考:[1] [2])
答案 0 :(得分:1)
// @flow
import { type ElementConfig, type ComponentType } from 'react';
import { TouchableOpacity } from 'react-native';
type ButtonTouchableProps = {|
...$Exact<ElementConfig<typeof TouchableOpacity>>,
color: string,
|};
const ButtonTouchable: ComponentType<ButtonTouchableProps> = styled.TouchableOpacity`
background-color: ${props => props.color};
`;