File tree Expand file tree Collapse file tree 2 files changed +63
-11
lines changed Expand file tree Collapse file tree 2 files changed +63
-11
lines changed Original file line number Diff line number Diff line change @@ -2,23 +2,31 @@ import React from 'react'
2
2
import { StatusBar } from 'expo-status-bar'
3
3
import { NavigationContainer } from '@react-navigation/native'
4
4
import { createStackNavigator } from '@react-navigation/stack'
5
+ import { ApolloClient , InMemoryCache , ApolloProvider } from '@apollo/client'
5
6
6
7
import HomeScreen from './src/HomeScreen'
7
8
import { screenOptions } from './src/styles'
8
9
9
10
const Stack = createStackNavigator ( )
10
11
12
+ const client = new ApolloClient ( {
13
+ uri : 'https://api.graphql.guide/graphql' ,
14
+ cache : new InMemoryCache ( ) ,
15
+ } )
16
+
11
17
export default function App ( ) {
12
18
return (
13
- < NavigationContainer >
14
- < Stack . Navigator initialRouteName = "Home" screenOptions = { screenOptions } >
15
- < Stack . Screen
16
- name = "Home"
17
- component = { HomeScreen }
18
- options = { { title : '📖 The GraphQL Guide' } }
19
- />
20
- </ Stack . Navigator >
21
- < StatusBar style = "light" />
22
- </ NavigationContainer >
19
+ < ApolloProvider client = { client } >
20
+ < NavigationContainer >
21
+ < Stack . Navigator initialRouteName = "Home" screenOptions = { screenOptions } >
22
+ < Stack . Screen
23
+ name = "Home"
24
+ component = { HomeScreen }
25
+ options = { { title : '📖 The GraphQL Guide' } }
26
+ />
27
+ </ Stack . Navigator >
28
+ < StatusBar style = "light" />
29
+ </ NavigationContainer >
30
+ </ ApolloProvider >
23
31
)
24
32
}
Original file line number Diff line number Diff line change 1
1
import React from 'react'
2
+ import { Text , FlatList , Pressable } from 'react-native'
3
+ import { gql , useQuery } from '@apollo/client'
2
4
3
5
import Loading from './Loading'
6
+ import styles from './styles'
7
+
8
+ const CHAPTERS_QUERY = gql `
9
+ query Chapters {
10
+ chapters {
11
+ id
12
+ number
13
+ title
14
+ }
15
+ }
16
+ `
17
+
18
+ const ChapterItem = ( { chapter } ) => {
19
+ const { number, title } = chapter
20
+ let header , subheader
21
+
22
+ if ( number ) {
23
+ header = `Chapter ${ number } `
24
+ subheader = title
25
+ } else {
26
+ header = title
27
+ }
28
+
29
+ return (
30
+ < Pressable style = { styles . item } >
31
+ < Text style = { styles . header } > { header } </ Text >
32
+ { subheader && < Text style = { styles . subheader } > { subheader } </ Text > }
33
+ </ Pressable >
34
+ )
35
+ }
4
36
5
37
export default ( ) => {
6
- return < Loading />
38
+ const { data, loading } = useQuery ( CHAPTERS_QUERY )
39
+
40
+ if ( loading ) {
41
+ return < Loading />
42
+ }
43
+
44
+ return (
45
+ < FlatList
46
+ data = { data . chapters }
47
+ renderItem = { ( { item } ) => < ChapterItem chapter = { item } /> }
48
+ keyExtractor = { ( chapter ) => chapter . id . toString ( ) }
49
+ />
50
+ )
7
51
}
You can’t perform that action at this time.
0 commit comments