【发布时间】:2021-09-22 15:48:24
【问题描述】:
在我的 react-native 项目中,我正在使用库
"@react-navigation/native": "^5.8.10",
"@react-navigation/stack": "^5.12.8",
我有嵌套导航器,像这样:
// root level I have a stack navigator where it contains two screens, `Home` and `Settings`.
const App = ()=> {
const rootStack = createStackNavigator();
return (
<NavigationContainer>
<rootStack.Navigator>
<rootStack.Screen name="Home" component={Home} />
<rootStack.Screen name="Settings" component={Settings} />
</rootStack.Navigator>
</NavigationContainer>
);
}
// The Settings screen is a nested stack navigator
const Settings = ()=> {
const settingsStack = createStackNavigator();
return (
<settingsStack.Navigator>
<settingsStack.Screen name="SettingsOne" component={SettingsOneScreen} />
<settingsStack.Screen name="SettingsTwo" component={SettingsTwoScreen} />
</settingsStack.Navigator>
);
}
如您所见,设置屏幕实际上是另一个级别(嵌套)的堆栈导航器。
在SettingsOneScreen 上,有一个按钮将用户导航到SettingsTwoScreen。
const SettingsOneScreen = ({navigation}) => {
...
return (
...
<Button onPress={()=>navigation.navigate("SettingsTwo")}/>
)
}
现在,在SettingsTwoScreen,我有一个按钮,我想在用户点击按钮时关闭整个设置导航器堆栈。这就是关闭整个设置堆栈并向用户显示Home。如何实现?
const SettingsTwoScreen = ({navigation}) => {
...
return (
...
<Button onPress={/*dismiss the settings stack*/}/>
)
}
(当然我不能使用navigation.goBack(),它只会将用户导航回上一个屏幕,即在这种情况下SettingOneScreen。)
【问题讨论】:
-
你能抛出一个带有 repo 和预期结果的零食演示吗?我会解决这个问题的。
标签: react-native react-navigation react-navigation-v5 react-navigation-stack