gpt4 book ai didi

javascript - React native - 防止用户返回登录屏幕

转载 作者:可可西里 更新时间:2023-11-01 05:49:39 26 4
gpt4 key购买 nike

我使用 Facebook SDK 创建了一个登录按钮。用户登录后,应用程序将导航到第二个屏幕 (NavigatorIOS)。从第二个屏幕,用户可以使用导航(后退按钮)返回登录屏幕。

如果用户已经登录,我如何防止他返回登录屏幕?

index.ios.js

import React, { Component } from 'react'

import {
AppRegistry,
StyleSheet,
NavigatorIOS
} from 'react-native'

import LoginView from './src/login-view'

class MyApp extends Component {
render() {
return (
<Provider store={store}>
<NavigatorIOS
initialRoute={{
component: LoginView,
title: 'MyApp',
index: 0
}}
/>
</Provider>
);
}
}
AppRegistry.registerComponent('MyApp', () => MyApp);

登录 View

import React, {Component} from 'react'
import {
View,
Text,
StyleSheet,
TouchableHighlight,
} from 'react-native'

import CategoryView from './category-view'

import {LoginButton, AccessToken, GraphRequest, GraphRequestManager} from 'react-native-fbsdk'

class LoginView extends Component {
goToCategoryView = () =>
this.props.navigator.push({
title: 'Categories',
component: CategoryView,
})

render(){
return(
<View style={styles.container}>
<LoginButton
readPermissions={['public_profile','email']}
onLoginFinished={
(error, result) => {
if (error) {
console.log('login has error: ', result.error)
} else if (result.isCancelled) {
console.log('login is cancelled.')
} else {
AccessToken.getCurrentAccessToken().then((data) => {
this.goToCategoryView()
})
}
}
}
onLogoutFinished={() => {console.log('logged out')}} />
</View>
)
}
}

export default LoginView

最佳答案

使用 Navigator,您可以使用 resetTo(startingRoute) 方法来重置堆栈,并从您过去的路线作为参数开始一个新的堆栈。这样做会阻止在堆栈中返回导航。

如果我没有误解你的组件,你应该使用这样的东西:

goToCategoryView = () => {
//Replace here push with resetTo
this.props.navigator.resetTo({
title: 'Categories',
component: CategoryView,
})
}

Facebook Docs

关于javascript - React native - 防止用户返回登录屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com