-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.tsx
132 lines (121 loc) · 3.19 KB
/
App.tsx
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import React from 'react';
import type {PropsWithChildren} from 'react';
import {
Button,
SafeAreaView,
ScrollView,
StatusBar,
StyleSheet,
Text,
useColorScheme,
View,
} from 'react-native';
import {
Colors,
Header,
} from 'react-native/Libraries/NewAppScreen';
import * as Unimp from 'react-native-unimp';
const appid = '__UNI__ADD10A8';
type SectionProps = PropsWithChildren<{
title: string;
}>;
function Section({children, title}: SectionProps): React.JSX.Element {
const isDarkMode = useColorScheme() === 'dark';
return (
<View style={styles.sectionContainer}>
<Text
style={[
styles.sectionTitle,
{
color: isDarkMode ? Colors.white : Colors.black,
},
]}>
{title}
</Text>
<Text
style={[
styles.sectionDescription,
{
color: isDarkMode ? Colors.light : Colors.dark,
},
]}>
{children}
</Text>
</View>
);
}
function App(): React.JSX.Element {
const isDarkMode = useColorScheme() === 'dark';
const backgroundStyle = {
backgroundColor: isDarkMode ? Colors.darker : Colors.lighter,
};
const [path, setPath] = React.useState<string | undefined>();
React.useEffect(() => {
// 初始化小程序
Unimp.initialize({ isEnableBackground: false, capsule: true })
.then(async () => {
const isInitialize = await Unimp.isInitialize();
if (isInitialize) {
console.debug('[小程序初始化]: 成功');
Unimp.getAppBasePath(appid).then(_path => {
setPath(_path);
});
}
})
.catch((e) => console.debug(`[小程序初始化]: 失败:${e.message}`));
}, []);
return (
<SafeAreaView style={backgroundStyle}>
<StatusBar
barStyle={isDarkMode ? 'light-content' : 'dark-content'}
backgroundColor={backgroundStyle.backgroundColor}
/>
<ScrollView
contentInsetAdjustmentBehavior="automatic"
style={backgroundStyle}>
<Header />
<View
style={{
backgroundColor: isDarkMode ? Colors.black : Colors.white,
}}>
<Section title="Step One">
调用 <Text style={styles.highlight}>initialize()</Text>{' '}
初始化小程序.
</Section>
<Section title="See Unimp Path">
获取小程序路径 <Text style={styles.highlight}>{path}</Text>{' '}
以便检查程序资源是否释放.
</Section>
<Section title="Open">
调用 <Text style={styles.highlight}>openUniMP()</Text> 打开小程序.
</Section>
<View style={styles.button}>
<Button title="打开小程序" onPress={() => Unimp.openUniMP(appid)} />
</View>
</View>
</ScrollView>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
sectionContainer: {
marginTop: 32,
paddingHorizontal: 24,
},
sectionTitle: {
fontSize: 24,
fontWeight: '600',
},
sectionDescription: {
marginTop: 8,
fontSize: 18,
fontWeight: '400',
},
highlight: {
fontWeight: '700',
},
button: {
margin: 25,
},
});
export default App;