这是我的抽屉导航配置。
return (
<NavigationContainer theme={navigationTheme}>
<Drawer.Navigator
drawerContent={(props) => (
<DrawerContent {...props} />
)}
>
<Drawer.Screen name="Home" component={HomeScreen} />
<Drawer.Screen name="About" component={AboutScreen} />
</Drawer.Navigator>
</NavigationContainer>
);
而在我的 DrawerContent
组件。
export default function DrawerContent({ state, navigation, ...props }) {
return (
<DrawerContentScrollView {...props}>
<Drawer.Section>
{state.routes.map((route) => (
<DrawerItem
key={route.key}
label={route.name}
onPress={() => navigation.navigate(route.name)}
/>
))}
</Drawer.Section>
</View>
</DrawerContentScrollView>
);
}
我想增加一个 icon
支配我 DrawerItem
内的组件 DrawerContent
组件。我试着这样做。
<Drawer.Screen name="Home" icon="home" component={HomeScreen} />
而在我的 DrawerContent
{state.routes.map((route) => (
<DrawerItem
key={route.key}
icon={({ color, size }) => (
<MaterialCommunityIcons name="home" icon={route.icon} color={color} size={size} />
)}
label={route.name}
onPress={() => navigation.navigate(route.name)}
/>
))}
但是 route.icon
财产是 undefined
. 有什么想法吗?
使用以下方法修复它 屏幕上的选项道具.
在我的抽屉导航器中。
<Drawer.Navigator>
<Drawer.Screen
name="Home"
component={HomeScreen}
options={{ icon: 'home' }}
/>
</Drawer.Navigator>
而在自定义中访问它... DrawerContent
组成部分。
export default function DrawerContent({ state, navigation, ...props }) {
const getIcon = (key) => props.descriptors[key].options.icon;
return (
<DrawerContentScrollView {...props}>
<Drawer.Section>
{state.routes.map((route) => (
<DrawerItem
key={route.key}
label={route.name}
icon={({ color, size }) => (
<MaterialCommunityIcons
name={getIcon(route.key)}
color={color}
size={size}
/>
)}
onPress={() => navigation.navigate(route.name)}
/>
))}
</Drawer.Section>
</View>
</DrawerContentScrollView>
);
}