SuperAPI AI 工具集

building-native-ui

前端与建站

查看项目

更新于 10-16 03:42

技能介绍

用途:在 React Native 或 Expo 中构建界面时使用,包括页面与组件布局、导航实现、动画与手势交互、原生平台控件、模态与表单弹层、组件样式等场景。核心思路是:React Native 没有 CSS、DOM 和浏览器布局引擎,渲染的是原生平台视图,因此应以原生组件与 Flexbox 思考,而非 HTML/CSS。

主要能力:一是导航,Expo Router 采用基于文件的路由,app/ 目录下文件自动成为路由,支持动态路由、路由分组、Stack 与 Tabs 布局,可用 Link 声明式跳转或 useRouter 命令式跳转(push、replace、back)。二是布局,默认使用 Flexbox,与 Web 的差异是 flexDirection 默认 column、alignContent 默认 flex-start、数值无单位;需用 SafeAreaView(react-native-safe-area-context)处理刘海、状态栏与 Home 指示条。

动画与手势:用 react-native-reanimated 的 useSharedValue、useAnimatedStyle、withSpring、withTiming 实现运行在原生线程的动画,支持 entering/exiting 过渡;配合 react-native-gesture-handler 的 Gesture、GestureDetector 与 withDecay 处理拖拽等手势。

原生控件与图标:通过 @expo/ui 使用 Switch、Slider、SegmentedControl;通过 expo-symbols 的 SymbolView 使用 SF Symbols 图标;也可用 requireNativeView 包装原生视图。弹窗方面,Stack.Screen 可设 presentation: 'modal' 或 'formSheet',后者支持 sheetAllowedDetents、sheetGrabberVisible、sheetCornerRadius 等选项。

样式:使用 StyleSheet.create,与 CSS 不同之处包括无层叠继承(Text 内 Text 除外)、数值无单位、无简写、属性为 camelCase、无伪类(用 Pressable 的 style 函数处理按下态)、iOS 用 shadow* 而 Android 用 elevation,可用 Platform.select 做平台区分。

常见错误与修法:不要使用 100vh 等 CSS 单位,用 flex: 1 或 Dimensions;顶层页面务必包 SafeAreaView;动画不要用 setState,改用 Reanimated shared value;不要 ScrollView 嵌套 ScrollView,改用 FlatList 的 ListHeaderComponent;不要硬编码尺寸;列表用 FlatList 配合 keyExtractor 而非 map。资料未提及该技能的收费、价格与具体安装命令。