DrawerScreen.js
1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* @flow */
import * as React from 'react';
import SceneView from '../SceneView';
import withCachedChildNavigation from '../../withCachedChildNavigation';
import type {
NavigationScreenProp,
NavigationState,
NavigationRoute,
NavigationRouter,
NavigationDrawerScreenOptions,
} from '../../TypeDefinition';
type Props = {
screenProps?: {},
router: NavigationRouter<NavigationState, NavigationDrawerScreenOptions>,
navigation: NavigationScreenProp<NavigationState>,
childNavigationProps: {
[key: string]: NavigationScreenProp<NavigationRoute>,
},
};
/**
* Component that renders the child screen of the drawer.
*/
class DrawerScreen extends React.PureComponent<Props> {
render() {
const {
router,
navigation,
childNavigationProps,
screenProps,
} = this.props;
const { routes, index } = navigation.state;
const childNavigation = childNavigationProps[routes[index].key];
const Content = router.getComponentForRouteName(routes[index].routeName);
return (
<SceneView
screenProps={screenProps}
component={Content}
navigation={childNavigation}
/>
);
}
}
export default withCachedChildNavigation(DrawerScreen);