如何为React Native Styled Components的自定义Props指定类型?
解决Styled Components自定义Props的TypeScript类型警告
这个警告是因为TypeScript无法识别你给styled.TextInput添加的自定义platform属性,需要手动扩展组件的Props类型来解决:
步骤1:定义包含自定义属性的Props接口
先导入必要的类型,然后创建继承自TextInputProps的接口,添加你的platform属性:
import styled from 'styled-components/native'; import { TextInput, TextInputProps } from 'react-native'; // 扩展TextInputProps,添加自定义的platform属性 interface IdTextInputProps extends TextInputProps { platform: boolean; }
步骤2:给Styled组件指定自定义Props类型
创建IdTextInput时,在styled.TextInput后面加上<IdTextInputProps>来指定组件的Props类型:
const IdTextInput = styled.TextInput<IdTextInputProps>` width: ${(props) => props.platform ? '50%' : '100%'}; `;
步骤3:正常使用组件
现在传入platform属性时就不会有类型警告了:
const isTablet = DeviceInfo.isTablet(); return ( <IdTextInput platform={isTablet} // 可添加TextInput的其他原生属性,比如placeholder、keyboardType等 /> );
原理说明
Styled Components在TypeScript环境下,默认只识别基础组件(这里是TextInput)的原生Props和主题相关Props。通过定义自定义Props接口并绑定到Styled组件上,TypeScript就能正确识别你添加的platform属性,消除类型警告。
内容的提问来源于stack exchange,提问作者user19476497
相关产品推荐
相关产品推荐

