8
8
DarkTheme ,
9
9
DefaultTheme ,
10
10
} from 'react-native-paper' ;
11
+ import createReactContext from 'create-react-context' ;
11
12
import { DrawerNavigator } from 'react-navigation' ;
12
13
import RootNavigator from './src/RootNavigator' ;
13
14
import DrawerItems from './DrawerItems' ;
@@ -17,11 +18,15 @@ type State = {
17
18
theme : Theme ,
18
19
} ;
19
20
21
+ const ThemeToggleContext : any = createReactContext ( ) ;
22
+
20
23
const App = DrawerNavigator (
21
24
{ Home : { screen : RootNavigator } } ,
22
25
{
23
- contentComponent : ( { screenProps } ) => (
24
- < DrawerItems toggleTheme = { screenProps . toggleTheme } />
26
+ contentComponent : ( ) => (
27
+ < ThemeToggleContext . Consumer >
28
+ { toggleTheme => < DrawerItems toggleTheme = { toggleTheme } /> }
29
+ </ ThemeToggleContext . Consumer >
25
30
) ,
26
31
}
27
32
) ;
@@ -36,19 +41,16 @@ class PaperExample extends React.Component<{}, State> {
36
41
}
37
42
38
43
_toggleTheme = ( ) =>
39
- this . setState ( {
40
- theme : this . state . theme === DarkTheme ? DefaultTheme : DarkTheme ,
41
- } ) ;
44
+ this . setState ( state => ( {
45
+ theme : state . theme === DarkTheme ? DefaultTheme : DarkTheme ,
46
+ } ) ) ;
42
47
43
48
render ( ) {
44
49
return (
45
50
< PaperProvider theme = { this . state . theme } >
46
- < App
47
- screenProps = { {
48
- toggleTheme : this . _toggleTheme ,
49
- theme : this . state . theme ,
50
- } }
51
- />
51
+ < ThemeToggleContext . Provider value = { this . _toggleTheme } >
52
+ < App />
53
+ </ ThemeToggleContext . Provider >
52
54
< KeepAwake />
53
55
</ PaperProvider >
54
56
) ;
0 commit comments