React Native - 2021 年下半年回顾
尽管我们都对 React Native 0.67 版本的发布感到兴奋,但我们想花点时间来**庆祝**社区在过去半年中取得的成就,并分享 React Native 未来**展望**。
具体来说,2021 年下半年对我们和社区来说都是一个令人兴奋的半年,我们有机会在我们的开源生态系统中投入更多。我们改进了一些流程,并从头创建了新的流程,这将帮助您、我们和社区享受**更好**的 React Native 体验。
仓库健康状况
在 2021 年下半年,我们投入精力解决仓库多年来积累的一些*开源债务*。具体来说,我们大部分精力都集中在**拉取请求**上。我们建立了一个内部流程,以确保所有新的拉取请求都能及时处理。
虽然这不是一个完整的列表,但我们想重点介绍一些我们从贡献者那里收到的**有影响力的** PRs
- 无障碍
- #31630
Added Support for Entrance/exit from collection by Flatlist(通过 Flatlist 添加了集合的进入/退出支持),作者:@anaskhraza
- #31630
- 崩溃
- #29452
Fix - TextInput Drawable to avoid Null Pointer Exception RuntimeError(修复 - TextInput Drawable 避免空指针异常运行时错误),作者:@fabriziobertoglio1987
- #29452
- 显示
- #31777
fix: TouchableNativeFeedback ripple starts on previous touch location(修复:TouchableNativeFeedback 波纹从上次触摸位置开始),作者:@intergalacticspacehighway - #31789
Fix support for blobs larger than 64 KB on Android(修复 Android 上支持大于 64 KB 的 blob),作者:@tomekzaw - #31007
Fix selectionColor doesn't style Android TextInput selection handles(修复 selectionColor 不样式化 Android TextInput 选择手柄),作者:@fabriziobertoglio1987 - #32398
Fix Android border positioning regression(修复 Android 边框定位回归),作者:@oblador - #29099
[Android] Allows to set individual (left,top,right,bottom) dotted/dashed( [Android] 允许设置单独的(左、上、右、下)点状/虚线),作者:@fabriziobertoglio1987 - #29117
[Android] Fix font weight numeric values( [Android] 修复字体粗细数值),作者:@fabriziobertoglio1987
- #31777
- 交互
- #28995
[Android] Fix TextInput Cursor jumping to the right when placeholder null( [Android] 修复 TextInput 占位符为空时光标向右跳动),作者:@fabriziobertoglio1987 - #28952
[Android] Fix non selectable Text in FlatList( [Android] 修复 FlatList 中不可选的文本),作者:@fabriziobertoglio1987 - #29046
[Android] onKeyPress event not fired with numeric keys( [Android] 数字键不触发 onKeyPress 事件),作者:@fabriziobertoglio1987 - #31500
fix#29319 - ios dismiss modal(修复 #29319 - iOS 关闭模态框),作者:@intergalacticspacehighway - #32179
Fix: multiline textinput start "jerking" when trying to move cursor.(修复:多行文本输入框在移动光标时开始“抽动”),作者:@xiankuncheng - #29039
Fix to make taps on views outside parent bounds work on Android(修复 Android 上父边界外的视图点击无效问题),作者:@hsource
- #28995
- 性能
- #31764
Optimize font handling on iOS(优化 iOS 上的字体处理),作者:@Adlai-Holler - #32536
Don't reconstruct app component on split-screen(分屏时不要重新构建应用程序组件),作者:@Somena1
- #31764
- 测试
- #31401
Add unit tests for VirtualizedList render quirks(为 VirtualizedList 渲染怪癖添加单元测试),作者:@NickGerleman
- #31401
鉴于这些 PRs 解决了 Meta 和整个开源社区都受到影响的问题,它们关闭了相应的 issue 并引起了大量反响。
还有很多 PRs 我们想提出来,我们再次**感谢**所有花时间帮助我们解决 bug 并改进 React Native 的人。
社区参与
在这个半年的开始,我们设定了一个目标,要与社区进行更多**沟通**,并建立持续沟通的流程。以下是我们 2021 年下半年的一些参与活动
- 我们有机会参加了 React Native EU,Joshua Gross 发表了题为 将 Fabric 渲染器引入“Facebook”应用程序 的演讲。
- 我们在 Reddit 上举办了一场“问我们任何问题”(AUA)活动,收到了 100 多个问题!AUA 是一个很好的机会,既可以让我们了解社区参与度,也可以让大家提出任何问题。如果您还没有查看,请务必查看答案,因为其中一些非常具有洞察力。
- 我们分享了我们的多平台愿景,一份针对 Android 12 和 iOS 15 的陷阱指南,以及 Hermes 成为 React Native 默认 JS 引擎的进展和愿景!
- 我们自己的 Kevin Gozali 出现在一期 React Native Radio 播客中,讨论了新架构。
- 在 ReactConf 2021 上,ReactConf 的 Rick Hanlon 分享了 React 和 React Native 的统一多平台愿景。此外,Eric Rozell 和 Steven Moyes 分享了 React Native Desktop 在支持 Meta 和 Microsoft 应用程序以及实际展示多平台愿景方面取得的惊人进展。
除了在 2021 年下半年分享更多更新之外,我们还比以往任何时候都更加**依赖**我们的社区。我们依赖贡献者在试用新架构材料的早期草稿时提供的关键反馈。此外,我们在调试关键发布问题和改进方面也得到了社区专业知识的大力支持。
我们的社区为 React Native 带来了丰富的知识,我们需要继续培养它。
新架构的推广和发布
2022 年将是**开源领域新架构**的一年。
我们一直在努力提供将新架构推广到应用程序和库所需的基础设施。我们邀请了一些合作伙伴和核心贡献者/库维护者来完善我们对新架构的支持,以获取早期反馈。
我们现在正准备在我们的网站上发布一份新指南:新架构入门。这将是我们将在 2022 年发布的一系列材料的入口点,并将帮助您使用新架构迁移/启动您的项目。
此外,我们想强调对新架构材料**提供反馈**的重要性。我们仍在敲定最后细节的过程中,您的意见将帮助每个人更无缝地采用新架构。
**发布**在新架构推广中扮演着关键角色。我们上个半年的目标是确保任何发布阻塞问题都不会停滞不前。我们通过澄清和改进流程和职责来解决这个问题,以实现更好的问责制。我们的发布协调现在在专门的讨论仓库中进行,并有更清晰的发布问题报告。
在 2022 年上半年,我们将继续迭代发布职责,以支持新架构的推广。如果您想帮助测试发布候选版本或进行改进,请随时加入讨论!
走向移动端及更远
从 ReactConf 演讲阵容中可以看出,React Native 不仅仅是 Android 和 iOS。
在 2021 年初,我们分享了我们的多平台愿景,并且成功地在桌面和 VR 上推广了 React Native。
我们期待将平台特定的**模式融合**到 React Native 体验中。
最后,我们再次感谢社区在 2021 年下半年给予的巨大支持。看到贡献者们在 GitHub 上齐心协力、互相支持、修复 bug、分享他们的经验并帮助我们将 React Native 提供给数百万用户,这总是令人惊叹。
敬请期待,期待**更精彩的 2022 年** 🎉!
