2017-05-25 34 views
11

Redux ile tepki-navigasyon ayarım var. Uygulamam bir giriş ve içerik ekranına sahip bir ebeveyn TabBarNavigator'dan oluşmaktadır. İçerik Ekranı, uygulamanın ana navunu içeren bir Yığın Navigator'dur. Redux ve Navigator'ların diğer tüm yönleri beklendiği gibi çalışır, ancak StackNavigator'daki varsayılan geri düğmesi de geri dönmek için ebeveyn TabBarNavigator'ı tetikler.RedNo - Gezinme-Gezinme TabNavigator içinde yuvalanmış StackNavigator'da Geri düğmesi, her iki gezginde geri eylemi tetikler

Bu beklenen davranış? Ben böyle navigationOptions içinde headerLeft tanımlarsanız beklendiği gibi çalıştığını fark:

static navigationOptions = ({ navigation }) => { 
    return { 
     headerLeft: (
     <Button transparent onPress={() => { navigation.goBack(); }}><Text>Back</Text></Button> 
    ) 
    }; 
    }; 

Kam herkes bu neyin sebep açıklayabilir? Varsayılan stackNavigator arka düğmesi redux ile çalışmanın bir yolu var mı?

+0

headerLeft'i tanımlamaksızın bu problemi aşmayı başardınız mı? – zunder

+0

Anlayışımın anlaşılması için, 'Yönerge/BACK' türündeki gönderim eylemi, headerLeft belirtilmezse bir anahtar eksik. Bunun için uygun navigasyon nesnesini eksik sanırım. – zunder

+0

Bunu “props.navigation.goBack (null)' kullanarak çözdüm. Beni buna ihbar neyi Biraz handwavey, ama şudur: https://reactnavigation.org/docs/navigators/navigation-prop – mienaikoe

cevap

1

Belki bir eylem sevk daha iyi çalışır:

onPress={() => { 
     navigation.dispatch(NavigationActions.navigate({ 
     routeName: '<screen name here>' 
     })); 
    }} 
1

Daha önce, onPress olaya bir şey yapmak çağırabilir goBack() o belirli redux için harekete gönderme vardır:

static navigationOptions = ({ navigation }) => { 
return { 
    headerLeft: (
    <Button 
     transparent 
     onPress={() => { 
      <ACTION_DISPATCH> 
      navigation.goBack(); 
     }}> 
     <Text>Back</Text> 
    </Button> 
) 
};}; 
0

Benim durumumda, konu biraz daha karmaşıktı çünkü Navigasyon Redux Entegrasyonunu kullanıyorum.

Sırtım eylem ben getStateForAction yöntemi (eyaleti) ikinci parametre cevapsız , benim indirgeyicide, iyi bir "geri" bir eylem sevk ama.

getStateForAction (aksiyon, devlet)

https://reactnavigation.org/docs/routers/api#getStateForAction-action-state

Yani, benim navigasyon redux içinde, bu geri redüktör ile çalışır: bu geri eylemle

export const back = (state) => AppNavigator.router.getStateForAction(NavigationActions.back(), state) 

bir Yuvalanmış bir gezginden geri dönmek ana yönlendiriciyi yeniden yüklemiyor.

İlgili konular