0.0.19 • Published 3 years ago

react-navigation-generated-cli v0.0.19

Weekly downloads
18
License
ISC
Repository
-
Last release
3 years ago

Usage for Typescript Expo Managed Apps

Step 1. Install react-navigation in your expo app https://reactnavigation.org/docs/getting-started

Step 2. Install react-navigation-generated-cli globally.

npm i -g react-navigation-generated-cli

Step 3. Install react-navigation-generated in your app.

cd your-app
npm install react-navigation-generated

Step 3. Setup your screen component, and the parameters it requires from the navigator.

import React from 'react';
import { View } from 'react-native';

type Params = {
  username: string;
};

const SignUpScreen = () => {
  return (
    <View style={{ height: 100, width: 100, backgroundColor: 'purple' }} />
  );
};

export { Params };
export default SignUpScreen;

Step 4. Setup root app navigation routes, param type imports, logging, and code generation markings. /your-app/src/index.tsx

import {
  logRootRoutes,
  resolveRootRoute,
  RootAppNavigators,
} from 'react-navigation-generated';
import { createStackNavigator } from '@react-navigation/stack';
// Screen parameters need to be imported as { Params as X_YParams }, where Y is a route depth below X
import SignUpScreen, {
  Params as LoginStack_SignUpParams,
} from './SignUpScreen';

const signUpParams: LoginStack_SignUpParams = {
  username: 'larry',
};

// Root navigators of your app
const rootRoutes: RootAppNavigators = {
  LoginStack: {
    container: createStackNavigator(),
    props: {
      initialRouteName: 'SignUp',
    },
    children: {
      SignUp: {
        props: {
          initialParams: signUpParams,
          component: SignUpScreen,
        },
      },
    },
  },
};

// Log your routes (only needed when generating files using cli)
logRootRoutes(rootRoutes);

// Start and end markings need to be inserted into the file
// START react-navigation-generated types
// END react-navigation-generated types

// Create your route components to use in your NavigationContainer
const LoginStack = resolveRootRoute(rootRoutes.LoginStack);

const App = () => <NavigationContainer>{LoginStack}</NavigationContainer>;

export default App;

Step 5. Create a config YAML file in your root app directory. /your-app/rn-gen-config.yml

navigationroot: '/src/index.tsx'
outputpath: '/src/routes.tsx'

Step 6. Run rn-gen from your app's root directory. An iOS simulator should be open and the expo app should be exited on it. /your-app

rn-gen

Now you can use your generated files to navigate. /your-app/src/NewScreen.tsx

import { useNavigation } from './index';
import routes from './routes';

...
const navigation = useNavigation();
navigation.navigateTo(routes.LoginStack.SignUp, { username: 'bill' });
...

TODO

  • Combine type params across navigators.
  • Route name check initial route name prop.
  • Make easier to use.
0.0.19

3 years ago

0.0.18

4 years ago

0.0.16

4 years ago

0.0.17

4 years ago

0.0.15

4 years ago

0.0.14

4 years ago

0.0.10

4 years ago

0.0.11

4 years ago

0.0.12

4 years ago

0.0.13

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.3

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.2

4 years ago