-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathApp.js
84 lines (68 loc) · 1.69 KB
/
App.js
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import React, { Component } from "react";
import { ActivityIndicator } from "react-native";
import { ApolloProvider, Query } from "react-apollo";
import ApolloClient from "apollo-boost";
import gql from "graphql-tag";
const client = new ApolloClient({ uri: 'http://YOUR_INTERNAL_IP_ADDRESS:4000/graphql' });
import Pokemon from "./src/components/Pokemon";
import getRandomInt from "./src/helpers/getRandomInt";
export const AppContext = React.createContext({ data: { pokemon: null } });
export default class App extends Component {
state = {
query: null
}
componentDidMount() {
const query = this.getQuery();
this.setState({
query
});
}
getQuery = () => {
const randomID = getRandomInt(1, 807);
return `
query GetPokemonById {
pokemon(id: ${randomID}) {
id,
name,
desc,
pic,
types {
id,
name
}
}
}
`
}
render() {
const { query } = this.state;
if (!query) return null;
return (
<ApolloProvider client={client}>
<Query query={gql`${query}`} >
{({ loading, error, data }) => {
if (loading || error) return <ActivityIndicator size="large" color="#0000ff" />
return (
<AppContext.Provider value={{...data.pokemon, onPress: this.onGetNewPokemon}} style={styles.container}>
<Pokemon />
</AppContext.Provider>
)
}}
</Query>
</ApolloProvider>
);
}
//
onGetNewPokemon = () => {
const query = this.getQuery();
this.setState({
query
});
}
}
//
const styles = {
container: {
flex: 1
}
};