Dynamic route with React Navigation

前端 未结 1 972
无人共我
无人共我 2020-12-18 08:32

I have a react native app running with react navigation 3.9 with 2 components Signup and Event:

export default class Signup extends         


        
相关标签:
1条回答
  • 2020-12-18 09:25

    You can create dynamic routes based on the token. You'll need a screen that renders those two routes. Like

    // app renders createStackNavigator with Event and Signup
    const routes = {
      Event: {
        screen: Event,
        navigationOptions: {
          title: 'Event',
        },
      },
      Signup: {
        screen: Signup,
        navigationOptions: {
          title: 'Signup',
        },
      },
    };
    
    class App extends React.Component {
    
      // creates dynamic routes
      createDynamicRoutes = initiaRoute => {
        return createAppContainer(
          createStackNavigator(routes, {
            initialRouteName: initiaRoute,
          })
        );
      };
    
      render() {
        // get initial route from splash screen
        // this.props.navigation.navigate('App', { init: 'init screen' });
        const initiaRoute = this.props.navigation.state.params.init || 'Event';
    
        // create routes and set initial route
        const AppContainer = this.createDynamicRoutes(initiaRoute);
        return <AppContainer />;
      }
    }
    

    InitScreen navigator renders App and Splash

    const InitScreen = createSwitchNavigator({
      Splash: Splash,
      App: App,
    })
    
    export default createAppContainer(InitScreen);
    

    Demo

    0 讨论(0)
提交回复
热议问题