2017-11-10 4 views
0

Ich habe ein Problem mit TabNavigator und StackNavigator in reaktiv-native. Ich möchte meine Navigation zurücksetzen, wenn ich einen Knopf drücke. Ich habe meine Stack Navigation in meiner Tab Navigation. Das Problem ist, dass ich nur eine Navigation zurücksetzen ...TabNavigator zurücksetzen

Plan:

-tabNavigator 
    -listing.js 
    -stackNavigator 
     -types.js 
     -picture.js 
     -ad.js 

so, wenn ich in ad.js bin ich habe eine Schaltfläche, wenn ich darauf klicken, mein stackNavigation zurückgesetzt einzugeben. js und tabNavigator auf Listing.js Also ich möchte Linsting.js endlich zurückgeben.

meine Navigation: Navigation.js

export const resetAction = NavigationActions.reset({ 
    index: 0, 
    actions: [ 
    NavigationActions.navigate({ routeName: 'Types'}), 
    ], 
    key: null 
}) 
export const listingAction = NavigationActions.navigate({ 
    routeName: 'Listing', 
    }) 


const Stack = StackNavigator(
    { 
    Types: {screen: SelectTypesScreen}, 
    Picture: {screen: SelectPictureScreen}, 
    Ad: {screen: CreateAd} 
    }) 

const Tab = TabNavigator(
    { 
    Listing: {screen: ListingScreen}, 
    Preference: {screen: PreferencesScreen}, 
    Add: {screen : Stack} 
    }, 
    { 

    } 
) 

export default class App extends Component { 
    render() { 
     return (
      <Tab /> 
    ); 
    } 
    } 

Tab Navigation linsting.js

export default class Listing extends Component { 
    render() { 
     return (
      <View> 
       <Text> Listing </Text> 
      </View> 
     ); 
    } 
} 

Stapel Navigations ad.js

export default class CreateAd extends Component { 
    render() { 
     return (
      <View> 
       <Text style={{marginTop: '80%', marginLeft: '40%'}}> Ad </Text> 
       <Button title="Ok" onPress={() => {console.log("displayer 1"), this.props.navigation.dispatch(resetAction), console.log("displayer 2"), this.props.navigation.dispatch(listingAction)}} /> 
      </View> 
     ); 
    } 
} 

Antwort

0

Es ist besser, Ihre Navigationen verschachtelte Struktur zu ändern. Gehen Sie besser mit exakten Anweisungen wie Docs. Ein Root-Navigator kann ein stacknavigator sein und Sie können TabNavigator, um es als Bildschirm

const MainScreenNavigator = TabNavigator({ 
    Recent: { screen: RecentChatsScreen }, 
    All: { screen: AllContactsScreen }, 
}); 

const SimpleApp = StackNavigator({ 
    Home: { screen: MainScreenNavigator }, 
    Chat: { screen: ChatScreen }, 
}); 

Siehe docs https://reactnavigation.org/docs/intro/nesting

+0

OK Dank, aber es ist nicht meine Antwort :) –

Verwandte Themen