-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathArticleTabPage.js
117 lines (104 loc) · 2.99 KB
/
ArticleTabPage.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import React, {Component} from 'react';
import {ActivityIndicator, StyleSheet, View} from "react-native";
import {createAppContainer, createMaterialTopTabNavigator,} from 'react-navigation';
import ArticleListPage from "./ArticleListPage";
const REQUEST_URL = "https://wanandroid.com/wxarticle/chapters/json";
let Container;
/**
* 玩安卓的公众号
*/
export default class ArticleTabPage extends Component {
constructor(props) {
super(props);
this.state = {
isLoading: true,
// dataArray: [],
};
}
componentDidMount() {
this.fetchData();
}
fetchData() {
fetch(REQUEST_URL)
.then((response) => {
return response.json();
})
.then((responseData) => {
let data = responseData.data;
this.createContainer(data);
this.setState({
// dataArray: this.state.dataArray.concat(data),
isLoading: false,
});
data = null;
})
.catch((error) => {
console.log(error)
});
}
render() {
if (this.state.isLoading) {
return this.renderLoadingView();
}
// let A = createAppContainer(this.createTabsNavigator());
return <Container/>;
}
createTabs(data) {
let tabPages = {};
data.map((value, i) => {
tabPages[value.name] = {
screen: () => <ArticleListPage chapterId={value.id} navigation={this.props.navigation}/>
}
});
return tabPages;
}
createTabsNavigator(data) {
return createMaterialTopTabNavigator(this.createTabs(data), {
lazy: true,
swipeEnabled: true,
animationEnabled: true,
backBehavior: "none",
tabBarOptions: {
activeTintColor: 'white',
scrollEnabled: true,
tabStyle: {
minWidth: 30
},
labelStyle: {
fontSize: 12,
},
indicatorStyle: {
height: 2,
backgroundColor: 'white'
},
style: {
height: 50,
justifyContent: 'center',
alignItems: 'center'
}
},
});
}
createContainer(data) {
Container = createAppContainer(this.createTabsNavigator(data));
}
renderLoadingView() {
return (
<View style={styles.loading}>
<ActivityIndicator
animating={true}
color='#549cf8'
size="large"
/>
</View>
);
}
}
const styles = StyleSheet.create({
loading: {
flex: 1,
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center'
},
});