代码之家  ›  专栏  ›  技术社区  ›  Max Schmeling

如何将触摸不透明度属性类型与其他字段组合

  •  1
  • Max Schmeling  · 技术社区  · 6 年前

    我正在尝试添加 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 元素,因为属性 颜色 是 对象类型[1]中缺少,但在属性[2]中存在。(参考文献:[1][2])

    1 回复  |  直到 6 年前
        1
  •  1
  •   DAVID _    6 年前
    // @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};
    `;