2017-06-03 118 views
0

我正在使用React-Navigation,导航栏遇到问题。 我有一个名为LoginScreen的页面,它在登录后将用户移动到HomeScreen。 我的问题是我在主屏幕上有一个“后退”按钮,因此我可以返回到登录屏幕(我不想要)这是代码:删除“返回”按钮

LoginScreen(其中我浏览到主屏幕):

handlePress(navigate){ 
    firebaseRef.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(function(firebaseUser){ 
     //Success, move to homepage. 
     navigate("Home"); 
    }).catch(function(error){ 
     //Failed to log in, print error. 
    }); 
} 

导航里面render()

const { navigate } = this.props.navigation; 

这就是我所说的handlePress:

<TouchableOpacity style={styles.logBtn} onPress={()=>this.handlePress(navigate)}> 
    <Text style={styles.logTxt}> 
    Login 
    </Text> 
</TouchableOpacity> 

我搜索了一下,并尝试在handlePress中写navigate.replace("Home");,但它只是不会导航。

我在做什么错?

回答

1

我想为你做的最好的事情是重置,您可以与复位做导航:

import { NavigationActions } from 'react-navigation'; 


    const resetAction = NavigationActions.reset({ 
     index: 0, 
     actions: [ 
     NavigationActions.navigate({ routeName: 'Home'}) 
     ] 
    }) 
    this.props.navigation.dispatch.(resetAction); 

你可以找到这样或阅读更多有关在这里react-navigation-doc

,或者你可以改变您的主屏幕导航配置其功能后退按钮图标

static navigationOptions = { 
     title: 'Home', 
     header: ({ navigate }) => { 
     {/* left here refers to the left back button */} 
      let left = (
       <TouchableOpacity onPress={() => navigate('Profile')} > 
        <Icon name="ios-menu-outline" 
        size={25} style={{ paddingRight: 5, paddingLeft: 20 }} 
        color="#ffffff" /> 
       </TouchableOpacity> 
      ); 
      let style = { backgroundColor: '#00AFEF',elevation: 0,shadowOpacity: 0,}; 
      let titleStyle = { color: '#ffff', fontSize: 25, fontFamily: 'Arial' }; 
      return { left, style, titleStyle } 
     }, 
    } 
+0

谢谢。 NavigationActions工作得很好。 –

0
static navigationOptions={ 
    title:'Categories', 
    headerLeft: (<View></View>), }; 

适用于我;)