2017-03-16 56 views
26

Doğal olarak gezinme (tepki-gezinme) StackNavigator kullanıyorum. , uygulamanın tüm yaşam döngüsü boyunca Giriş sayfasından başlar. Giriş ekranına dönmek için bir geri seçeneğim olmak istemiyorum. Giriş ekranından sonra ekranda nasıl gizlenebileceğini bilen var mı? BTW, ben de kullanarak giriş ekranında bunu saklıyorum:Yerel navigasyona tepki vermek için geri al tuşu devre dışı bırak

const MainStack = StackNavigator({ 
    Login: { 
    screen: Login, 
    navigationOptions: { 
     title: "Login", 
     header: { 
     visible: false, 
     }, 
    }, 
    }, 
    // ... other screens here 
}) 

cevap

58

tepki-navigasyon versiyonları> = 1.0.0-beta.9 için geri düğmesi yok etmek için Eğer siz) dan gezinmek istediğiniz ekranda şunlardır:

import { NavigationActions } from 'react-navigation'; 

ve tüm arka işlevler devre dışı olacaktır hedef rota gitmek için bir işlevi kullanın:

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

ve hala kaydırın yapabilirsiniz iOS'ta

+14

Eğer 2017 – mixdev

+2

içinde iseniz bu doğru cevap Bu geri düğmesi kaldıracaktır, ancak android hala cihaz geri düğmesini kullanarak gezinebilirsiniz. Bunu da devre dışı bırakmanın bir yolu var mı? –

+3

Evet, cevabımı güncelledim. –

3

kendim buldum;) ekleyerek:

left: null, 

düğmesini varsayılan geri devre dışı bırakın.

const MainStack = StackNavigator({ 
    Login: { 
    screen: Login, 
    navigationOptions: { 
     title: "Login", 
     header: { 
     visible: false, 
     }, 
    }, 
    }, 
    FirstPage: { 
    screen: FirstPage, 
    navigationOptions: { 
     title: "FirstPage", 
     header: { 
     left: null, 
     } 
    }, 
    }, 
14

Sen left:null kullanarak geri düğmesine gizleyebilirsiniz, ancak android cihazlar için hala kullanıcı geri düğmesine bastığında geri gitmek mümkün değil. https://reactnavigation.org/docs/navigators/navigation-actions#Reset

Bu çözüm, react-navigator 1.0.0-beta.7 için çalışır ancak left:null artık son sürümü için çalışır: Sen Burada navigasyon durumunu sıfırlamak için dokümanlar şunlardır navigasyon durumunu sıfırlamak gerekir ve left:null

düğmeye gizlemek. Eğer çok navigasyon yığını temizlemek istiyorsanız böyle bir şey yapabiliriz,

navigationOptions: { 
    title: 'MyScreen', 
    headerLeft: null 
} 

(varsayarak:

+4

gezinmek istediğinizde sonra this.resetNavigation('myRouteWithDisabledBackFunctionality') çağrı ekranın kenarından geri dönün. Navigasyon durumunu sıfırlamak kesinlikle gereklidir. – cameronmoreau

1

tepki-navigasyon versiyonları> = 1.0.0-beta.9 hedef rotasına

navigationOptions: { 
headerLeft: null}