我在一个react-native应用上工作,这个项目使用react-navigation 4.x来导航这个应用。我最近把这个项目升级到了react-navigation的5.x,在升级的时候我遇到了一个问题。问题是我的项目同时有一个FooterNavigator
和一个DrawerNavigator
,它们都调用了同一个组件。
我们已经找到了一种方法来解决react-navigation 4.x中的问题,但是react-navigation的新版本需要为每个Screen
指定一个名称和一个组件。有没有办法让我同时拥有两个导航器,或者降级更好?
Image of the error
这是我的页脚导航器
const Tab = createBottomTabNavigator();
export const FooterNavigator = () => {
return (
<Tab.Navigator>
<Tab.Screen name="Search" component={Search}>
<Button>
<Icon name="magnify" type="MaterialCommunityIcons"/>
<Text style={footerStyle.footerText}>Zoeken</Text>
</Button>
</Tab.Screen>
<Tab.Screen name="Count" component={Count}>
<Button>
<Icon name="counter" type="MaterialCommunityIcons"/>
<Text style={footerStyle.footerText}>Tellen</Text>
</Button>
</Tab.Screen>
<Tab.Screen name="Identify" component={Identify}>
<Button>
<Icon name="file-question" type="MaterialCommunityIcons"/>
<Text style={footerStyle.footerText}>Herken</Text>
</Button>
</Tab.Screen>
<Tab.Screen name="Program" component={Program}>
<Button>
<Icon name="chip" type="MaterialCommunityIcons"/>
<Text style={footerStyle.footerText}>Wijzig</Text>
</Button>
</Tab.Screen>
</Tab.Navigator>
)
}
这是我的DrawerNavigator
export const RootNavigator = () => {
let DrawerScreens = [];
Routes.forEach(function (route) {
DrawerScreens.push(<Drawer.Screen name={route.name} component={route.component}/>)
});
return (
<Drawer.Navigator>
{DrawerScreens}
</Drawer.Navigator>
)
}
它们都在我的Layout.js中调用和呈现
render() {
return (
<NavigationContainer>
<RootNavigator />
<FooterNavigator/>
</NavigationContainer>
)
}
非常感谢!
3条答案
按热度按时间avwztpqn1#
用这个
"而不是这个"
解决您问题
rfbsl7qr2#
只需从堆栈屏幕中删除组件属性。如果您正在通过导航堆栈传递自定义值
ma8fv8wu3#
当我使用一个
<Stack.Screen>
并向它提供一个组件和一个子组件时,我会得到这个错误,正如错误中提到的那样。移除第1行上的该位
component={Home}
修复了该错误。