在反应本机导航中从选项卡屏幕打开堆栈屏幕
Open stack screen from Tab screen in react native navigation
我在Stack.Navigation中按以下方式设置了一组屏幕
<Stack.Navigation>
<Stack.Screen name = 'Home' />
<Stack.Screen name = 'Tabs' />
<Stack.Screen name = 'Settings' />
</Stack.Navigation>
我还在 Tabs
屏幕中按以下方式设置了标签系统。
<Tab.Navigation>
<Tab.Screen name = 'Tab1' />
<Tab.Screen name = 'Tab2' />
<Tab.Screen name = 'Settings' />
</Tab.Navigation>
现在我需要选项卡屏幕 Settings
来打开堆栈屏幕 Settings
。
我该如何使用 React Native Navigation 来做到这一点?
如有任何帮助或建议,我们将不胜感激。
编辑:
我的选项卡屏幕包含的不仅仅是选项卡,例如:
<View>
<View>
Lots of other content here
</View>
<Tab.Navigation>
<Tab.Screen name = 'Tab1' />
<Tab.Screen name = 'Tab2' />
<Tab.Screen name = 'Settings' />
</Tab.Navigation>
</View>
因此标签内容只会覆盖部分屏幕。当我移动到“设置”屏幕时,我需要它占据整个屏幕,因为它会在从 Stack.Nav.
调用时自动执行
如果我没理解错的话,你是想从选项卡导航器中打开堆栈设置屏幕。
将它们指向同一个组件,实现您的目标吗?
示例:
<Stack.Navigation>
<Stack.Screen name = 'Home' />
<Stack.Screen name = 'Tabs' />
<Stack.Screen name = 'Settings' component={SettingsScreen}/>
</Stack.Navigation>
其次是:
<Tab.Navigation>
<Tab.Screen name = 'Tab1' />
<Tab.Screen name = 'Tab2' />
<Tab.Screen name = 'Settings' component={SettingsScreen} />
</Tab.Navigation>
如果不是,请分享有关预期行为的更多详细信息。
您可以将侦听器添加到选项卡屏幕,阻止默认操作并导航到 settings
按选项卡时的堆栈屏幕。
...
<Tab.Navigation>
<Tab.Screen
name = 'Settings'
listeners={() => ({
tabPress: (e) => {
e.preventDefault();
navigation.navigate('Settings');
}
})} />
</Tab.Navigation>
我在Stack.Navigation中按以下方式设置了一组屏幕
<Stack.Navigation>
<Stack.Screen name = 'Home' />
<Stack.Screen name = 'Tabs' />
<Stack.Screen name = 'Settings' />
</Stack.Navigation>
我还在 Tabs
屏幕中按以下方式设置了标签系统。
<Tab.Navigation>
<Tab.Screen name = 'Tab1' />
<Tab.Screen name = 'Tab2' />
<Tab.Screen name = 'Settings' />
</Tab.Navigation>
现在我需要选项卡屏幕 Settings
来打开堆栈屏幕 Settings
。
我该如何使用 React Native Navigation 来做到这一点?
如有任何帮助或建议,我们将不胜感激。
编辑:
我的选项卡屏幕包含的不仅仅是选项卡,例如:
<View>
<View>
Lots of other content here
</View>
<Tab.Navigation>
<Tab.Screen name = 'Tab1' />
<Tab.Screen name = 'Tab2' />
<Tab.Screen name = 'Settings' />
</Tab.Navigation>
</View>
因此标签内容只会覆盖部分屏幕。当我移动到“设置”屏幕时,我需要它占据整个屏幕,因为它会在从 Stack.Nav.
调用时自动执行如果我没理解错的话,你是想从选项卡导航器中打开堆栈设置屏幕。
将它们指向同一个组件,实现您的目标吗?
示例:
<Stack.Navigation>
<Stack.Screen name = 'Home' />
<Stack.Screen name = 'Tabs' />
<Stack.Screen name = 'Settings' component={SettingsScreen}/>
</Stack.Navigation>
其次是:
<Tab.Navigation>
<Tab.Screen name = 'Tab1' />
<Tab.Screen name = 'Tab2' />
<Tab.Screen name = 'Settings' component={SettingsScreen} />
</Tab.Navigation>
如果不是,请分享有关预期行为的更多详细信息。
您可以将侦听器添加到选项卡屏幕,阻止默认操作并导航到 settings
按选项卡时的堆栈屏幕。
...
<Tab.Navigation>
<Tab.Screen
name = 'Settings'
listeners={() => ({
tabPress: (e) => {
e.preventDefault();
navigation.navigate('Settings');
}
})} />
</Tab.Navigation>