todo
Components
libs
- react-native-reanimated - 动画
- nativewind - tailwindcss
- react-native-gesture-handler - 手势
- async-storage - 持久存储
- react-native-safe-area-context - 安全区域
Expo
tools
检查配置
npx expo config --type introspect
Theme
跟路由「_layout.ts」
import { DarkTheme, DefaultTheme, ThemeProvider } from "@react-navigation/native";
import { Stack } from "expo-router";
import { StatusBar } from "expo-status-bar";
import { useColorScheme } from "@/hooks/useColorScheme";
/* 根路由 */
export default function RootLayout() {
const colorScheme = useColorScheme();
const theme = colorScheme === "dark" ? DarkTheme : DefaultTheme;
return (
/* 主题 Provider */
<ThemeProvider value={theme}>
{/* 声明可跳转的路由栈 */}
<Stack screenOptions={{ headerShown: false }}>
<Stack.Screen name="animate/carousel" />
<Stack.Screen name="animate/panRespnder-drag" />
</Stack>
{/* 状态栏 */}
<StatusBar style="auto" animated />
</ThemeProvider>
);
}
son-router
import { Link } from "expo-router";
import { Text } from "react-native";
import { SafeAreaView } from "react-native-safe-area-context";
import { useTheme } from "@react-navigation/native";
export default function Page() {
const { colors } = useTheme();
return (
<SafeAreaView style={{ flex: 1, alignItems: "center" }}>
<Text style={[{ color: colors.text }]}>to /</Text>
</SafeAreaView>
);
}
router
基于文件路由系统,跟 nextjs 类似。
动态路由通过 [slug]
文件夹来实现,通过 useLocalSearchParams
来获取参数。