跳到主要内容

22 篇博文 含有标签「announcement」

查看所有标签

React Native 文档更新

· 阅读需 4 分钟
Rachel Nabors
Facebook 文档工程师

去年,我们进行了用户访谈并发放了一项调查问卷,以更多地了解人们在何时何地以及如何使用 React Native 文档。基于 24 次访谈和超过 3000 份调查响应的数据和指导意见,我们努力改进 React Native 的文档,今天很高兴与大家分享我们的进展:

非常感谢所有参与访谈、填写调查和文档工作的朋友们!是你们的合作让这一切成为可能。

认识 Hermes,一款为 React Native 优化的新型 JavaScript 引擎

· 阅读需 2 分钟
Rachel Nabors
Facebook 文档工程师

上周在 Chain React 大会上,我们宣布了 Hermes,这是一款我们在 Facebook 研发的开源 JavaScript 引擎。它是一款小巧轻量、为在 Android 上运行 React Native 优化的 JavaScript 引擎。快来看看吧!

Hermes 通过降低内存占用、减少下载大小,以及缩短应用可用时间或“交互时间”(TTI),提升了 React Native 的性能。

“在分析性能数据时,我们注意到 JavaScript 引擎本身是启动性能和下载大小的重要因素。基于这些数据,我们知道必须优化 JavaScript 性能,以适应手机这种更受限的环境,相较于台式机或笔记本电脑。在探索过其他选项后,我们构建了一个我们称之为 Hermes 的新 JavaScript 引擎。它设计用来提升应用性能,重点关注我们的 React Native 应用,即使是在内存有限、存储速度较慢且计算能力受限的主流设备上。” —Hermes:一款为移动应用优化的开源 JavaScript 引擎,起步于 React Native

想要立即开始使用?务必查看文档中的新手指南,了解如何在现有 React Native 应用中启用 Hermes

Hermes 和 React Native 标志合并成带翼的烈焰,在孤独发光的安卓手机上方,闪电风暴中腾飞的插画。 插画作者:Rachel Nabors

宣布 React Native 0.60 发布

· 阅读需 5 分钟
Ryan Turner
核心维护者 & React Native 开发者

经过数百名贡献者数月的辛勤工作,React Native 核心团队自豪地宣布发布 0.60 版本。本次发布涵盖了 Android 和 iOS 平台的重要迁移,同时也修复了许多问题。本文将介绍本次发布的亮点。当然,请务必查阅更新日志以获取更详细的信息。最后,感谢所有贡献者帮助我们达成这一里程碑!

关注无障碍功能

无障碍 API 进行了许多改进,比如 announceForAccessibility,以及对 rolesaction supportflags 等的提升。无障碍是一门复杂的学问,但我们希望这些改进能让无障碍支持变得更容易。详情请务必查看 React Native 开源更新 2019 年 6 月

崭新的起点

React Native 的启动界面进行了更新!感谢众多贡献者帮助设计了新的界面。这个新的 “Hello World” 将以更友好、更吸引人的方式迎接用户进入生态系统。

新的初始化界面帮助开发者从一开始就利用资源和良好的示例快速入门

支持 AndroidX

AndroidX 是 Android 生态系统的一大进步,旧的支持库组件正在被弃用。在 0.60 版本,React Native 已经迁移至 AndroidX。这是一个破坏性变更,您的原生代码和依赖也需要进行迁移

由于此变更,React Native 应用必须开始使用 AndroidX。两者无法在同一应用中并行使用,因此应用的所有代码和依赖都必须统一使用其一。

来自 matt-oakesdiscussions-and-proposals 的说明

尽管您的原生代码需要自行迁移,[@mikehardy]、@cawfree@m4tt72 开发了一个名为 jetifier 的巧妙工具,可以自动修补您的 node_modules。库维护者需要升级,但这个工具可以为您提供临时解决方案,给维护者时间发布支持 AndroidX 的版本。如果您遇到与 AndroidX 迁移相关的错误,可以试试这个工具。

默认使用 CocoaPods

CocoaPods 现在已成为 React Native iOS 项目的一部分。如果您还未使用,请务必改用 xcworkspace 文件打开 iOS 平台代码(小技巧:可在根项目目录执行 xed ios)。此外,内部包的 podspec 也做了调整以兼容 Xcode 项目,有助于故障排查和调试。升级到 0.60 期间,您将需对 Podfile 做一些简单的修改,以启用这项令人振奋的支持。请注意,我们已知 use_frameworks! 存在兼容性问题,相关 issue 正在跟踪并提供变通方案和未来补丁。

精简核心模块移除

WebViewNetInfo 之前已迁移至独立仓库,在 0.60 版本中它们彻底从 React Native 仓库中移除。此外,响应社区对 App Store 新政策的反馈,Geolocation 也被抽出。如果您还未完成迁移,请加入对 react-native-webview@react-native-community/netinfo@react-native-community/geolocation 的依赖。若想自动化解决方案,可考虑使用 rn-upgrade-deprecated-modules。维护者自迁移以来对这些仓库已提交超过 100 次改动,我们期待社区持续支持!

原生模块现已自动链接

React Native CLI 团队引入了对原生模块链接的重大改进,称为 自动链接(autolinking)!多数场景下,您不再需要使用 react-native link。同时,整体链接流程也得到了重新设计。请务必照文档所述先执行对现有依赖的 react-native unlink

升级助手

@lucasbento@pvinis@kelset@watadarkstar 开发了一个极好的工具——Upgrade Helper,简化升级过程。它帮助 React Native 用户(尤其是已有底层项目或复杂定制的用户)清晰查看版本间的变更。请查看 更新的升级文档,并尝试使用该工具规划您的升级路径!

升级助手干净利落地展示了迁移到不同 React Native 版本所需的变更

致库维护者的一些提醒

AndroidX 相关变更几乎肯定需要更新您的库,请尽快支持。如果您还无法升级,建议使用 jetifier 检查您的库,确保用户能在构建时对您的库进行修补。

请查看 自动链接文档 以更新配置和 README。根据您的库之前的集成方式,您可能还需做额外调整。CLI 的依赖 指南提供了关于如何定义依赖接口的信息。

感谢

以上是我们记录到的主要亮点,当然还有许多值得期待的更新。查看全部更新请访问 更新日志。一如既往,请关注更多新闻。祝您愉快地使用 0.60 版本!

React Native 开源更新 — 2019年3月

· 阅读需 6 分钟
Christoph Nakazawa
Christoph Nakazawa
Former Engineer @ Facebook

我们于2018年第四季度公布了我们的 React Native 开源路线图,决定加大对 React Native 开源社区的投入。

在第一个里程碑中,我们重点关注识别和改进社区中最显眼的方面。我们的目标是减少未合并的拉取请求,缩减项目的表面面积,确定主要用户问题,并建立社区管理的指导方针。

在过去两个月里,我们取得了超过预期的进展。详情请继续阅读:

拉取请求

为了构建一个健康的社区,我们必须快速响应代码贡献。过去几年里,我们不太重视社区贡献的审查,积压了280个拉取请求(2018年12月)。在第一个里程碑里,我们将未处理的拉取请求数量减少到约65个。同时,每天新开的拉取请求平均数量从3.5个增长到了7个,这意味着我们在过去三个月处理了大约 600个拉取请求

我们合并了 近三分之二 的拉取请求,关闭了三分之一。关闭的拉取请求没有被合并,原因是它们已经过时或者质量较低,或者不必要地增加了项目表面面积。大部分合并的拉取请求修复了错误,提升了跨平台一致性,或者引入了新功能。其中值得一提的贡献包括提升类型安全和支持 AndroidX 的持续工作。

在 Facebook,我们直接运行 React Native 的主分支,因此所有更改都会先经过测试,确保发布版本的质量。在所有合并的拉取请求中,只有6个引发了问题:4个只影响了内部开发,2个是在发布候选版本阶段被发现。

社区中较为显眼的贡献之一是 更新后的“RedBox”屏幕。这是社区如何改善开发者体验的一个良好范例。

精简核心(Lean Core)

当前 React Native 的表面面积非常广泛,包含许多已经不维护的抽象层,这些在 Facebook 内部使用较少。我们正在努力缩减表面面积,以使 React Native 更加精简,并让社区更好地维护那些 Facebook 内部较少使用的抽象层。

在第一个里程碑中, 我们向社区寻求 Lean Core 项目的帮助。社区反响热烈,我们几乎应接不暇。 看看不到一个月内完成的所有工作

最让我们兴奋的是,维护者们积极投入,修复了长期存在的问题,增加了测试,并支持了很多长期以来请求的功能。这些模块获得的支持超过了 React Native 以往任何时候,说明这对社区来说是一个巨大进步。示例项目包括自抽取以来收到大量拉取请求的 WebView,以及由社区成员维护的 CLI,如今已收获了急需的改进和修复,详情见 React Native CLI 新家园

主要用户问题

2018年12月,我们向社区征询了他们关于 React Native 不满意的地方。我们汇总了反馈,并对每个问题进行了 回复。幸运的是,我们社区面临的许多问题,Facebook 内部同样存在。下一里程碑中,我们计划解决一些主要问题。

其中投票最高的问题之一是升级到 React Native 新版本时的开发体验。遗憾的是,我们在 Facebook 内部并不经历这一问题,因为我们直接使用主分支。值得庆幸的是,社区成员已开始着手改进这一问题:

0.59 版本发布

没有 React Native 社区,特别是 Mike GrabowskiLorenzo Sciandra 的帮助,我们无法顺利发布版本。我们希望改进发布管理流程,并计划从现在起更加积极参与:

  • 将与社区成员协作,为每个主要版本撰写博客文章。
  • 在升级新版本时,在 CLI 中直接显示重大破坏性变更。
  • 缩短发布所需时间。我们正在探索增加自动化测试并创建更完善的手动测试计划的方案。

许多计划将体现在即将发布的 React Native 0.59 版本 中。0.59 将带来 React Hooks、针对 Android 的新 64 位 JavaScriptCore 版本以及许多性能和功能提升。目前它已经作为候选版本发布,预计两周内稳定。

后续计划

接下来的两个月里,我们将继续管理拉取请求, 保持进度,同时开始减少未处理的 GitHub 问题数。我们将通过 Lean Core 项目持续缩减 React Native 表面面积。计划解决社区排名前5的主要问题。在完善社区指南后,我们将关注网站和文档。

我们非常高兴能在3月于 Facebook 伦敦接待来自社区的十多位贡献者,共同推进多项工作。感谢你们使用 React Native,希望你们能感受到我们在2019年努力带来的改进。数月后我们将带来新更新,届时也会持续合并你们的拉取请求! ⚛️✌️

每月发布节奏:发布 12 月和 1 月的候选版本

· 阅读需 2 分钟
Eric Vicenti
Facebook 工程师

在 React Native 推出不久后,我们开始每两周发布一次,以帮助社区采用新功能,同时保持版本的生产环境稳定。在 Facebook,我们必须每两周稳定代码库,以发布生产环境的 iOS 应用,因此我们决定以相同的节奏发布开源版本。现在,Facebook 的许多应用特别是在 Android 平台上每周都会发布一次。因为我们每周都从 master 分支发版,所以需要保持它的高度稳定。所以双周发布频率对于内部贡献者来说也不再有益。

我们经常听到社区反馈说发布速度难以跟上。像 Expo 这样的工具不得不跳过每隔一版,以应对快速的版本变化。因此很明显,双周发布并没有很好地服务社区。

现在改为每月发布

我们很高兴宣布新的每月发布节奏,以及 2016 年 12 月发布的版本 v0.40,该版本已经稳定了整整一个月,现在可以采用了。(只需要确保在 iOS 上更新你原生模块的头文件)。

虽然发布时间可能会有几天的浮动以避免周末或处理不可预见的问题,但你现在可以期待每个月的第一个工作日可用发布版本,并在月底正式发布。

使用当月版本获得最佳支持

1 月的候选版本已准备好试用,你可以在这里查看有哪些新内容

为了了解即将到来的变更并给 React Native 贡献者提供更好的反馈,尽可能总是使用当月的候选版本。到每个月月底正式版本发布时,包含的变更已经在 Facebook 生产环境应用中运行超过两周。

你可以用新的 react-native-git-upgrade 命令轻松升级你的应用:

npm install -g react-native-git-upgrade
react-native-git-upgrade 0.41.0-rc.0

我们希望这种更简单的方法能让社区更轻松地跟踪 React Native 的变化,并尽快采用新版本!

(感谢 Martin Konicek 提出这个计划,感谢 Mike Grabowski 促成其实现)

借助 Git 使升级更简单

· 阅读需 4 分钟
Nicolas Cuillery
Zenika 的 JavaScript 顾问与培训师

升级到新版 React Native 一直很困难。你可能以前见过这样的情况:

这些选项都不理想。覆盖文件的话,我们会丢失本地修改;不覆盖的话,则拿不到最新更新。

今天我很自豪地介绍一个帮助解决这个问题的新工具。该工具名为 react-native-git-upgrade,它在幕后使用 Git,尽可能自动解决冲突。

使用方法

要求:Git 必须在 PATH 中可用。你的项目不必是用 Git 管理的。

全局安装 react-native-git-upgrade

$ npm install -g react-native-git-upgrade

或者,使用 Yarn

$ yarn global add react-native-git-upgrade

然后,在你的项目目录里运行它:

$ cd MyProject
$ react-native-git-upgrade 0.38.0

注意:不要运行 'npm install' 来安装新的 react-native 版本。该工具需要比较旧版本与新版本的项目模板才能正常工作。只需在你的应用文件夹里(仍在旧版本时)如上所示运行它即可。

示例输出:

你也可以不带参数执行 react-native-git-upgrade,它将升级到最新版 React Native。

我们会尝试保留你对 Android 和 iOS 构建文件的修改,因此升级后你不需要运行 react-native link

该实现设计得尽可能低侵入,完全基于一个临时目录下即时创建的本地 Git 仓库。它不会干扰你的项目仓库(无论你用的是 Git、SVN、Mercurial 还是无版本控制)。出现意外错误时,源码会被还原。

它是如何工作的?

关键步骤是生成一个 Git 补丁。该补丁包含你应用当前版本与新版本间,在 React Native 模板里的所有变更。

为了获取该补丁,我们需要用 node_modules 目录下 react-native 包中内嵌的模板生成应用(这就是 react-native init 使用的同样模板)。之后,在当前版本与新版本的模板分别生成原生应用后,Git 就可以生成一个适合你项目的补丁(比如包含你的应用名):

[...]

diff --git a/ios/MyAwesomeApp/Info.plist b/ios/MyAwesomeApp/Info.plist
index e98ebb0..2fb6a11 100644
--- a/ios/MyAwesomeApp/Info.plist
+++ b/ios/MyAwesomeApp/Info.plist
@@ -45,7 +45,7 @@
<dict>
<key>localhost</key>
<dict>
- <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
+ <key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
[...]

接下来,我们只需将这个补丁应用到你的源码文件。旧的 react-native upgrade 会在遇到细微差异时向你询问,而 Git 则利用其三方合并算法自动合并大部分更改,并最终留下熟悉的冲突界定符:

    13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
<<<<<<< ours
CODE_SIGN_IDENTITY = "iPhone Developer";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/HockeySDK.embeddedframework",
"$(PROJECT_DIR)/HockeySDK-iOS/HockeySDK.embeddedframework",
);
=======
CURRENT_PROJECT_VERSION = 1;
>>>>>>> theirs
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
"$(SRCROOT)/../node_modules/react-native/React/**",
"$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
);

这些冲突一般很好处理。分界符 ours 代表“你的团队”,而 theirs 可视为“React Native 团队”。

为什么引入一个新的全局包?

React Native 自带一个全局 CLI(react-native-cli 包),它将命令代理给内嵌在 node_modules/react-native/local-cli 目录下的本地 CLI。

如前所述,流程必须从你当前的 React Native 版本启动。如果把实现嵌入本地 CLI,你无法在旧版本 React Native 中享用新功能。举例来说,如果这套新升级代码只发布于 0.38.0,那你就无法从 0.29.2 升级到 0.38.0。

基于 Git 的升级大大提升开发者体验,并且要让所有人都能用得上非常重要。通过使用独立的全局安装包 react-native-git-upgrade,无论你的项目用哪个版本 React Native,今天都可以使用这套新代码。

另外原因是 Martin Konicek 最近的 Yeoman 淘汰。我们不希望为了评估旧模板进而生成补丁,再把 Yeoman 依赖重新带回 react-native 包。

试试看并提供反馈

总结一句,尽情享用该功能,欢迎随时提出改进建议、报告问题,尤其是提交 Pull Request。每种环境和每个 React Native 项目都各不相同,我们需要你的反馈,让这个工具为更多人顺利工作。

感谢!

特别感谢了不起的公司 ZenikaM6 Web(存档),没有他们这一切都不可能实现!

介绍 Button、更快的 Yarn 安装以及公开路线图

· 阅读需 3 分钟
Héctor Ramos
Héctor Ramos
Former Developer Advocate @ Facebook

我们听到很多人反映,React Native 的工作内容非常多,跟踪进展可能会很困难。为了帮助大家了解正在进行的工作,我们现在发布了 React Native 路线图。大致来说,相关工作可以分为三个优先重点:

  • 核心库。为最有用的组件和 API 添加更多功能。
  • 稳定性。改进底层架构,减少 bug 并提升代码质量。
  • 开发者体验。帮助 React Native 开发者能够更快开发。

如果你有觉得有价值的新功能建议,欢迎访问 Canny,在这里你可以建议新功能并讨论已有提案。

React Native 的新内容

今天发布的 React Native 0.37 版本 引入了一个新的核心组件,让在任何应用中添加一个可点击按钮变得非常简单。我们还引入了对新包管理工具 Yarn 的支持,这将加速更新应用依赖的整个过程。

介绍 Button 组件

今天我们推出了一个基础的 <Button /> 组件,在所有平台上都拥有良好的展示效果。这个新组件解决了我们收到的最常见反馈之一:React Native 是少数没有开箱即用按钮的移动开发工具之一。

简单按钮在 Android 和 iOS 上的效果

<Button
onPress={onPressMe}
title="Press Me"
accessibilityLabel="Learn more about this Simple Button"
/>

有经验的 React Native 开发者知道如何制作按钮:在 iOS 上用 TouchableOpacity 实现默认样式,在 Android 上用 TouchableNativeFeedback 实现水波纹效果,然后加上一些样式。自定义按钮的制作和安装并不特别难,但我们的目标是使 React Native 极其易学。将基础按钮加入核心组件后,初学者可以在第一天就开发出很棒的东西,而不必花时间格式化按钮或学习 Touchable 的细节。

Button 组件旨在在各个平台上都表现良好且原生化,但不会支持所有自定义按钮的复杂功能。这是一个很好的起点,但并不意味着要替代你已有的所有按钮。想了解更多,请查看带有可运行示例的 Button 新文档

使用 Yarn 加快 react-native init

你现在可以使用新 JavaScript 包管理器 Yarn 来显著加快 react-native init 的速度。想体验提升,请 安装 yarn 并将 react-native-cli 升级到 1.2.0:

$ npm install -g react-native-cli

设置新应用时,你应该可以看到 “Using yarn” :

使用 yarn

简单的本地测试中,react-native init 在良好的网络环境下大约耗时 1 分钟(而使用 npm 3.10.8 时大约需要 3 分钟)。安装 yarn 是可选的,但强烈推荐。

感谢!

感谢所有为本次发布做出贡献的人。完整的 发布说明 已在 GitHub 上公开。拥有 24 个以上的 bug 修复和新功能,React Native 在大家的共同努力下持续变得更好。

0.36:无界面 JS、键盘 API 及更多

· 阅读需 3 分钟
Héctor Ramos
Héctor Ramos
Former Developer Advocate @ Facebook

今天我们发布了 React Native 0.36。请继续阅读,了解更多新内容。

无界面 JS(Headless JS)

无界面 JS 是一种在应用处于后台时运行 JavaScript 任务的方式。例如,它可以用于同步最新数据、处理推送通知或播放音乐。目前仅在 Android 上可用。

开始使用时,在一个专用文件中定义你的异步任务(例如 SomeTaskName.js):

module.exports = async taskData => {
// 在这里执行你的任务。
};

接下来,在 AppRegistry 中注册你的任务:

AppRegistry.registerHeadlessTask('SomeTaskName', () =>
require('SomeTaskName'),
);

使用无界面 JS 需要编写一些本地 Java 代码,以便在需要时启动服务。查看我们新的 无界面 JS 文档 了解更多内容!

键盘 API

使用 Keyboard 操作屏幕键盘现在变得更简单。你可以监听原生键盘事件并做出响应。例如,要关闭当前活动的键盘,只需调用 Keyboard.dismiss()

import {Keyboard} from 'react-native';

// 关闭键盘!
Keyboard.dismiss();

动画除法

React Native 已经支持通过加法、乘法和取模来组合两个动画值。到了 0.36 版本,现已支持通过 除法 来组合两个动画值。有些情况下需要一个动画值反转另一个动画值进行计算,比如反转缩放比例(2 倍 --> 0.5 倍):

const a = Animated.Value(1);
const b = Animated.divide(1, a);

Animated.spring(a, {
toValue: 2,
}).start();

b 将随 a 的弹簧动画变化,生成值 1 / a

基本用法如下:

<Animated.View style={{transform: [{scale: a}]}}>
<Animated.Image style={{transform: [{scale: b}]}} />
<Animated.View>

在此示例中,内部图片不会被拉伸,因为父视图的缩放被抵消了。如果你想了解更多,可以查看动画指南

深色状态栏

StatusBar 新增了一个 barStyle 值:dark-content。有了这个新增值,你现在可以在 Android 和 iOS 上都使用 barStyle。行为如下:

  • default:使用平台默认(iOS 上为浅色,Android 上为深色)。
  • light-content:使用浅色状态栏,文字和图标为黑色。
  • dark-content:使用深色状态栏,文字和图标为白色。

...以及更多

以上只是 0.36 版本更新内容的部分示例。请查看 GitHub 上的发行说明 获取完整新特性、bug 修复和破坏性变更列表。

你可以通过在终端运行以下命令升级到 0.36:

$ npm install --save react-native@0.36
$ react-native upgrade

致更好的文档

· 阅读需 5 分钟
Kevin Lacker
Facebook 工程经理

打造优秀的开发者体验,其中一部分是拥有优秀的文档。创建好的文档需要很多工作——理想的文档应当是简明、有用、准确、完整且令人愉悦的。最近我们根据大家的反馈努力提升文档质量,想和大家分享一些我们做出的改进。

行内示例

当你学习一个新的库、新的编程语言或新框架时,会有一个美妙的时刻,你第一次写出一段代码,尝试运行,看它是否能工作……而且它 确实 能工作。你创造了一些真实的东西。我们希望把这种直接的体验融入到文档里。比如这样:

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class ScratchPad extends Component {
render() {
return (
<View style={{flex: 1}}>
<Text style={{fontSize: 30, flex: 1, textAlign: 'center'}}>
这是不是很酷?
</Text>
<Text style={{fontSize: 100, flex: 1, textAlign: 'center'}}>
👍
</Text>
</View>
);
}
}

AppRegistry.registerComponent('ScratchPad', () => ScratchPad);

我们认为这些行内示例,借助 react-native-web-player 模块,在 Devin Abbott 的帮助下实现,是学习 React Native 基础的绝佳方式,我们也已更新了面向新手的 React Native 入门教程,尽可能使用这些示例。去看看吧——如果你曾经好奇只修改一小段示例代码会发生什么,这是一种很棒的试验方式。另外,如果你开发的是面向开发者的工具,想在自己的网站上展示一个实时的 React Native 示例,react-native-web-player 能让这件事轻松实现。

核心的模拟引擎由 Nicolas Gallagherreact-native-web 项目提供,它让 React Native 组件如 TextView 能在网页上显示。如果你对创建同时支持移动端与网页的体验感兴趣,代码共用大量代码库,可以查看 react-native-web

更好的指南

在 React Native 的某些部分,存在多种实现方式,我们收到反馈说可以给出更明确的指导。

我们新出了一个 导航指南,对比了不同方案,并给出使用建议——NavigatorNavigatorIOSNavigationExperimental。中期来看,我们正在努力改进和整合这些接口。短期内,我们希望更好的指南能够让你更容易应对。

我们还新增了一个关于 处理触摸 的指南,解释了制作按钮类界面的基本知识,并简述了多种处理触摸事件的方式。

我们着力改进的另一个领域是 Flexbox。包括如何使用 Flexbox 处理布局 和如何控制 组件尺寸 的教程,还包括一个虽然不够炫酷但希望对你有用的 React Native 布局控制属性列表

快速入门

当你开始在机器上搭建 React Native 开发环境时,确实需要安装和配置许多东西。要把安装过程变得非常有趣和令人激动很难,但我们至少可以让它尽可能快速且无痛。

我们构建了一个 全新的快速入门流程,让你先选择开发操作系统和移动操作系统,集中提供所有的设置说明。我们还亲自体验了安装流程,确保一切顺利,且每个决策点都有明确推荐。经过对无辜的同事的测试,我们相信这是一次改进。

我们还完善了 将 React Native 集成到已有应用 的指南。很多大型应用,比如 Facebook 自身的应用,实际上部分使用 React Native 构建,部分使用传统开发工具。我们希望这份指南能帮助更多人采用这种应用开发方式。

我们需要你的帮助

你的反馈让我们知道应当优先处理什么。我知道有些人看完这篇博客可能会想“更好的文档?哼,X 库的文档还是一团糟!”这非常好——我们需要这种热情。给我们反馈的最佳方式取决于反馈的类型。

如果你发现文档中有错误,比如描述不准确或代码无法运行,提交 Issue 是最直接的方式。标注“Documentation”标签,方便我们分配给对应人员。

如果不是具体的错误,而是文档内容本质上令人困惑,这就不太适合 GitHub Issue。相反,可以在 Canny 上发表你觉得哪部分文档需要改进。这有助于我们在写指南等更广泛工作中进行优先排序。

感谢你读到这里,也感谢你使用 React Native!

React Native:一年的回顾

· 阅读需 2 分钟
Martin Konicek
Facebook 软件工程师

自从我们开源 React Native 已经一年了。一开始,这只是几个工程师的一个想法,如今已经成为一个被 Facebook 及其他产品团队广泛使用的框架。今天在 F8 大会上,我们宣布微软将 React Native 引入 Windows 生态系统,使开发者能够在 Windows PC、手机和 Xbox 上构建 React Native 应用。该项目还将提供开源工具和服务,比如 Visual Studio Code 的 React Native 扩展和 CodePush,帮助开发者在 Windows 平台上创建 React Native 应用。此外,三星 正在为其混合平台构建 React Native,这将赋能开发者为数以百万计的智能电视、移动设备和可穿戴设备开发应用。我们还发布了 Facebook SDK for React Native,让开发者更容易地将 Facebook 的社交功能(如登录、分享、应用分析和 Graph API)集成到他们的应用中。一年之内,React Native 改变了开发者在各大主流平台上的开发方式。

这一年是史诗般的旅程——但我们才刚刚开始。下面回顾一下自从我们开源以来,React Native 如何成长和演进,我们在此过程中遇到的一些挑战,以及展望未来的期望。

以上为摘录。请在 Facebook Code 阅读完整文章。