移动端开发
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/mobile-development-sh-weebtc。
技能介绍
移动端开发要解决什么
React Native 和 Flutter 项目在迭代中容易积累一些「看起来能跑」的写法。它们在小列表、单一机型上并不显眼,一旦数据量变大或设备形态变多,问题就开始暴露。
- 滚动列表直接用
ScrollView加.map(),几千条数据时一次性渲染全部 cell,内存上涨、掉帧随之而来。 - 状态全部塞进全局 store,组件自身失去可读性,改一个列表要追好几个文件。
- 忘记处理刘海、状态栏、Home Indicator 等安全区域,界面在真机上被裁切。
- 每次 render 都新建内联样式对象,memo 判断随之失效,重渲染成本被放大。
- 重计算阻塞 JS 线程,动画和手势跟着卡顿。
- 只按一套交互约定实现,忽略了 iOS 侧返回滑动与 Android 返回键的差异。
这个技能做了什么
它把移动端常见的实现要求整理成一份可对照的清单,并在关键决策点上给出明确做法:
- 列表渲染:滚动列表一律走
FlatList(分组场景用SectionList),并且始终提供keyExtractor;数据量较大时通过windowSize与maxToRenderPerBatch控制渲染批次和内存占用。 - 导航:路由参数要求用 TypeScript 标注类型,避免跳转时出现隐式
any导致的运行时错误。 - 布局:样式集中在
StyleSheet.create中定义,而不是在 render 里写内联对象;布局需覆盖手机、平板与桌面宽度。 - 平台差异:使用
Platform.select处理 iOS / Android 的样式分歧,同时尊重各平台既有的交互习惯。 - 资源与计算:图片需要带缓存以及 loading / error 状态;耗时计算移出 JS 线程,可用
InteractionManager调度。
适用边界
这份清单停留在「写法与约定」层面,不会替你生成业务代码,也不含打包、上架、CI 等流程。它没有内置任何 UI 组件库的具体 API,实际项目仍需结合所用的组件库做取舍。安全区域的具体数值、图片缓存策略的实现细节同样需要按项目环境配置。此外,它不区分 React Native 的版本差异,旧版本中部分 API 的行为与新版并不一致,套用前应先确认项目版本。
使用场景
- 在 React Native 项目里做长列表页,要决定用 FlatList 还是 ScrollView,并配上 keyExtractor 与渲染批次参数。
- 真机上页面顶部被刘海裁切、底部被 Home Indicator 遮挡,需要用 SafeAreaView 把安全区域留出来。
- 同一个页面要同时适配手机、平板和桌面宽度,需要检查布局能否随容器变化而不是写死尺寸。
- 页面滑动掉帧,怀疑 JS 线程被重计算阻塞,需要把耗时逻辑挪出去并用 InteractionManager 调度。
适合人员
- 独立负责 App 的移动端工程师,需要一份可逐条对照的实现清单来自查代码。
- 正在重构 React Native 长列表页面的开发者,需要找到列表渲染与内存占用的具体改法。
- 从 Web 转做移动端的全栈工程师,需要补上安全区域和平台交互这些容易踩的坑。
- 维护 Flutter 页面的团队,需要统一组件拆分与平台分支的写法约定。