react native app with typescript,我试图通过props传递一个名称作为字符串,动态地创建使用@expo/vector-icons和Fontawesome或MaterialIcon的图标按钮。
我认为问题就在这里,但不知道如何解决。有什么想法?建议?也可以随意批评其他代码。
下面是接收name
属性的IconButton组件
import { Ionicons, MaterialIcons, FontAwesome } from
"@expo/vector-icons";
const star = "star";
type Props = {
name: keyof typeof MaterialIcons.glyphMap;
color: string;
onPress(): void;
};
export default function IconButton(props: Props) {
return (
<Ionicons.Button name={props.name} size={24} color={props.color} />
);
}
字符串
Fontawesome expo vector expected properties
“名称”属性是这里的问题。
这段代码来自一个使用IconButton
的屏幕,我将name
作为字符串传递。
useLayoutEffect(() => {
navigation.setOptions({
headerRight: () => {
return (
<IconButton
onPress={headerButtonPressHandler}
name="star"
color="gray"
/>
);
},
});
}, [navigation, headerButtonPressHandler]);
edit:更新代码,但name
仍有错误
updated code的
this is where I use IconButton
and pass in name
的
2条答案
按热度按时间hs1ihplo1#
在Props类型中,
name
不应该是字符串-它应该只允许存在于图标集中的名称。如果你在Github上浏览expo/vector-icons的问题,你可以看到其他人也面临着同样的问题,其中一个已经发布了解决方案:字符串
此解决方案和相关讨论可在此处找到:https://github.com/expo/vector-icons/issues/153#issuecomment-752769305
其中一位图书馆作者也提供了这个解决方案:
型
https://github.com/expo/vector-icons/issues/153#issuecomment-787130328
wwwo4jvm2#
这有助于
字符串