如何解决阻止用户访问Android上的“身份验证加载屏幕”
在我的应用程序中(并且很可能像其他任何应用程序一样),我有一个加载屏幕,该屏幕检查用户是否已登录。问题是,如果按下“后退”按钮,Android用户现在可以返回该屏幕。我如何避免用户这样做?
这是我在代码中所拥有的:
const loadingStack = createSwitchNavigator({
Loading: {
screen: Loading
}
},{
defaultNavigationOptions: {
unmountOnBlur: true,headerMode: 'none',gestureEnabled: false
}
}
);
export default createAppContainer(
createStackNavigator({
Loading: loadingStack,App: {
screen: AppTabNavigator,navigationOptions: {
gestureEnabled: false,},Auth: {
screen: AuthStack,...
解决方法
我看到两种解决方案:
- 更改导航并选择切换导航。
ID
- 如果要“欣赏” StackNavigator的动画,当从“加载”导航到“应用”时,可以用新视图替换当前视图。
createAppContainer(
createSwitchNavigator(
{
Loading: {
screen: Loading,navigationOptions: {
headerMode: 'none',}
},App: {
screen: AppTabNavigator,navigationOptions: {
gestureEnabled: false
}
},Auth: {
screen: AuthStack
}
}
)
)
这会将您的“加载屏幕”视图替换为应用程序“视图”,当您返回时,您将不会再重定向到“加载屏幕”,因为它不再位于堆栈中,而是由应用程序替换了。
编辑(由于评论过长,请回复此评论):
在这种情况下,如果要在Home上进行特殊的backButton管理,则可以使用React Native BackHandler。
例如,如果您不希望单击backButton时发生任何事情,请添加一个事件监听器,该监听器无论如何均返回 true :
//Example on your Loading Screen
this.props.navigation.replace({ routeName: "App" })
否则,如果要退出应用程序,例如:
import { BackHandler } from 'react-native'
...
componentDidMount() {
this.backHandler = BackHandler.addEventListener('hardwareBackPress',() => true)
}
componentWillUnmount(){
this.backHandler.remove()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。