feat: 添加page示例

This commit is contained in:
2025-11-06 22:48:08 +08:00
parent b3a06f7f9e
commit f551a26a0a
7 changed files with 83 additions and 80 deletions

82
pages/TestPage/index.tsx Normal file
View File

@@ -0,0 +1,82 @@
import { ScrollView } from 'react-native';
import { Stack, useRouter } from 'expo-router';
import { ThemedText, ThemedView } from '@/components';
import { styles } from './styles';
/**
* 测试页面
*
* 这是一个独立的业务页面示例,不包含底部 tabs
*
* 特点:
* - 带有返回按钮的 header
* - 不包含底部导航栏
* - 可以作为业务页面的模板
*/
export default function TestPage() {
const router = useRouter();
return (
<>
{/* 配置页面 header */}
<Stack.Screen
options={{
title: '测试页面',
headerShown: true,
headerBackTitle: '返回',
}}
/>
<ThemedView style={styles.container}>
<ScrollView style={styles.scrollView}>
<ThemedView style={styles.content}>
<ThemedText type="title" style={styles.title}>
</ThemedText>
<ThemedText style={styles.description}>
tabs
</ThemedText>
<ThemedView style={styles.section}>
<ThemedText type="subtitle"></ThemedText>
<ThemedText style={styles.item}> header</ThemedText>
<ThemedText style={styles.item}> </ThemedText>
<ThemedText style={styles.item}> </ThemedText>
<ThemedText style={styles.item}> </ThemedText>
</ThemedView>
<ThemedView style={styles.section}>
<ThemedText type="subtitle">使</ThemedText>
<ThemedText style={styles.item}> </ThemedText>
<ThemedText style={styles.item}> </ThemedText>
<ThemedText style={styles.item}> </ThemedText>
<ThemedText style={styles.item}> </ThemedText>
</ThemedView>
<ThemedView style={styles.section}>
<ThemedText type="subtitle"></ThemedText>
<ThemedText style={styles.item}>
文件路径: app/test-page.tsx
</ThemedText>
<ThemedText style={styles.item}>
访: /test-page
</ThemedText>
<ThemedText style={styles.item}>
跳转方式: router.push('/test-page')
</ThemedText>
</ThemedView>
<ThemedView style={styles.infoBox}>
<ThemedText type="defaultSemiBold">💡 </ThemedText>
<ThemedText style={styles.infoText}>
screens/
app/
</ThemedText>
</ThemedView>
</ThemedView>
</ScrollView>
</ThemedView>
</>
);
}

38
pages/TestPage/styles.ts Normal file
View File

@@ -0,0 +1,38 @@
import { StyleSheet } from 'react-native';
export const styles = StyleSheet.create({
container: {
flex: 1,
},
scrollView: {
flex: 1,
},
content: {
padding: 20,
},
title: {
marginBottom: 16,
},
description: {
marginBottom: 24,
lineHeight: 24,
},
section: {
marginBottom: 24,
},
item: {
marginTop: 8,
marginLeft: 8,
lineHeight: 24,
},
infoBox: {
padding: 16,
borderRadius: 8,
backgroundColor: 'rgba(0, 122, 255, 0.1)',
marginTop: 8,
},
infoText: {
marginTop: 8,
lineHeight: 22,
},
});

36
pages/index.ts Normal file
View File

@@ -0,0 +1,36 @@
/**
* pages 统一导出
*
* 这个目录用于存放复杂的业务页面组件
*
* 目录结构建议:
* pages/
* ├── index.ts # 统一导出
* ├── TestPage/ # 测试页面
* │ ├── index.tsx # 页面主组件
* │ ├── components/ # 页面私有组件
* │ └── styles.ts # 页面样式
* ├── ProfilePage/ # 个人资料页面
* └── SettingsPage/ # 设置页面
*
* 使用方式:
* 1. 在 pages/ 目录下创建页面组件
* 2. 在 app/ 目录下创建路由文件,引用 pages/ 中的组件
* 3. 从这里统一导出,方便管理
*
* 示例:
* ```typescript
* // pages/TestPage/index.tsx
* export default function TestPage() {
* return <View>...</View>;
* }
*
* // app/test.tsx
* import TestPage from '@/pages/TestPage';
* export default TestPage;
* ```
*/
// 导出业务页面组件
export { default as TestPage } from './TestPage';