-
Notifications
You must be signed in to change notification settings - Fork 3
/
App.js
71 lines (64 loc) · 1.56 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
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { PureComponent } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
} from 'react-native';
import RNPhotoGridView from 'react-native-photo-grid-view';
type Props = {};
type State = {
photos: Array<string>,
};
export default class App extends PureComponent<Props, State> {
constructor() {
super();
this.state = {
photos: [],
}
}
async componentDidMount() {
try {
const response = await fetch('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&count=42')
const data = await response.json();
this.state.photos = data.map((photo) => {
const num = Math.random();
// 30% chance of rendering the HD version
if (num < 0.3) {
return photo.hdurl;
} else {
return photo.url;
}
});
} catch (err) {
console.warn(err);
}
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Addison Global LTD tech test!
</Text>
<RNPhotoGridView data={this.state.photos} style={{flex: 1}} />
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop: 32,
backgroundColor: '#fff',
},
welcome: {
fontSize: 24,
textAlign: 'center',
margin: 16,
},
});