Skip to content

Instantly share code, notes, and snippets.

@jjylik
Last active April 25, 2021 09:51
Show Gist options
  • Save jjylik/62e9afe0a5d5f94f443beeeaf2d8edc2 to your computer and use it in GitHub Desktop.
Save jjylik/62e9afe0a5d5f94f443beeeaf2d8edc2 to your computer and use it in GitHub Desktop.
React native inline requires
const RootStack = (): JSX.Element => {
return (
<Stack.Navigator initialRouteName={initialRouteName}>
<Stack.Screen
name="SomeScreenWithLazyWrapper"
component={ScreenWrapper}
options={{title: 'Screen 1'}}
/>
<Stack.Screen
name="SomeScreenWithGetComponent"
getComponent={() => require('./ScreenImplementation').default}
options={{title: 'Screen 1'}}
/>
</Stack.Navigator>
);
};
export const ScreenWrapper = (props: ScreenProps): JSX.Element => {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const ScreenImplementation = require('./ScreenImplementation.tsx').default;
return <ScreenImplementation {...props} />;
};
const RootStack = (): JSX.Element => {
return (
<Stack.Navigator initialRouteName={initialRouteName}>
<Stack.Screen
name="SomeScreen"
component={SomeScreen}
options={{title: 'Screen 1'}}
/>
{SOME_FEATURE_ENABLED && (
<Stack.Screen
name="ScreenWhichMayNotBeInUse"
component={require('../screens/ScreenWhichMayNotBeInUse').default}
options={{title: 'Screen 2'}}
/>
)}
</Stack.Navigator>
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment