-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathApp.js
67 lines (64 loc) · 1.95 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
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/
import React, {useEffect, useState} from 'react';
import {StoreProvider} from 'easy-peasy';
import DropdownAlert from 'react-native-dropdownalert';
import {store} from './src/store';
import SplashScreen from 'react-native-splash-screen';
import getNavigator from './src/Navigator';
import Api from './src/react-api/Api';
import {setJSExceptionHandler} from './src/utils/errorHandle';
import {TopView} from 'teaset';
import {setActionSheetRef, setNoticeRef} from './src/utils/dialog';
import {BlockAuthors} from './src/components/query/BlockAuthors';
import {Events} from './src/components/query/Events';
import {ENDPOINT_DEFAULT} from './src/config/endpoints';
import {STORE_SETTING_ENDPOINT} from './src/config';
import ActionSheet from './src/components/ActionSheet';
setJSExceptionHandler(() => {}, true);
const App = () => {
const [appReady, setAppReady] = useState(false);
useEffect(() => {
//初始化一些配置
async function initData() {
await localStorage.init();
store.getActions().set.initData();
setAppReady(true);
SplashScreen.hide();
}
initData();
}, []);
if (!appReady) {
return null;
}
const Navigator = getNavigator({
initialRouteName: 'Main',
});
return (
<StoreProvider store={store}>
<Api
onUrlChange={url => localStorage.setItem(STORE_SETTING_ENDPOINT, url)}
url={localStorage.getItem(STORE_SETTING_ENDPOINT) || ENDPOINT_DEFAULT}>
<BlockAuthors>
<Events>
<TopView>
<Navigator />
<DropdownAlert
closeInterval={2000}
updateStatusBar={false}
ref={ref => setNoticeRef(ref)}
/>
<ActionSheet ref={setActionSheetRef} />
</TopView>
</Events>
</BlockAuthors>
</Api>
</StoreProvider>
);
};
export default App;