跳到主要内容

如何报告错误

报告 React Native 的 Bug 是为项目做出贡献的绝佳方式之一。我们使用 GitHub issues 作为处理新 Bug 报告的主要渠道。

在打开新 Bug 之前,请 搜索您的 Bug 是否已存在于我们的 issue tracker 中。大多数情况下,这是找到答复的最快方法,因为其他人可能已经遇到过相同的问题。

如果您在 issue tracker 中找不到您的 Bug,您可以打开一个新的。一旦您创建了一个新 issue,请确保您

  • 添加问题的描述。
  • 遵循 issue 模板上的说明。
  • 添加您正在使用的 React Native 版本。
  • 添加 npx @react-native-community/cli info 命令的输出。
  • 如果适用,添加问题的截图和视频。

所有 Bug 报告都应包含一个复现步骤:让我们能够理解问题的根源并帮助我们进行调试所需的代码。

警告

由于我们收到的 issue 数量很多,复现步骤是必需的。没有复现步骤的 issue 将无法进行调查,很可能会被关闭。

提供复现步骤

复现步骤的目标是提供一个复现您 Bug 的方法。没有复现步骤,我们将无法理解 Bug,也无法修复它。

复现步骤应最小化:尽可能少依赖(最好除 react-native 外没有其他依赖),因为这将帮助我们更好地隔离 Bug。当 GitHub 上的某人请求复现步骤时,他们不是在索要您所有的源代码。

您需要创建一个最小化的项目来复现您报告的相同崩溃/Bug/问题。

这个过程至关重要,因为创建复现步骤常常能解决问题。通过创建复现步骤,更容易判断问题是与您的特定设置相关,还是实际上是 React Native 本身的 Bug。

由于 React Native 的流量很大,我们只能接受以下其中一种作为有效的复现步骤:

  1. 对于大多数 Bug:向我们发送一个 Pull Request,编辑 RNTesterPlayground.js 来复现您的 Bug。
  2. 如果您的 Bug 与 UI 相关:使用 Snack
  3. 如果您的 Bug 与构建/升级相关:使用我们的 复现模板

RNTesterPlayground.js

提供复现步骤的最佳方法是向 React Native 发送一个 Pull Request,该 PR 会修改 RNTesterPlayground.js 文件。

提示

此复现步骤将针对 react-nativemain 分支运行您的代码,这是我们调查和修复您 Bug 的最快方式。

RNTesterPlayground.js 文件位于 RN-Tester 应用内,这是我们的参考 App。您可以在其 专用 README 文件中了解更多关于它的工作原理以及如何构建它。

此类复现步骤的一个示例是: 复现模态布局问题 #50704

在您编辑了 RNTesterPlayground.js 后,您就可以在 RNTester 的Playground Tab 中看到您的代码运行了。

Step one

Expo Snack

对于大多数与 UI 相关的 Bug,您可以使用 Expo Snack 来复现它们。

使用 Expo Snack,您可以在浏览器中运行 React Native 代码,并立即看到其渲染效果。

一旦您能在 Expo Snack 中复现您的 Bug,点击保存按钮即可获得一个可共享的链接,附加到您的 Bug 报告中。

复现模板

对于大多数与构建相关的 Bug,您应该使用 社区复现模板来复现它们。

该模板创建了一个使用 React Native Community CLI 运行的小型项目,可用于展示构建问题。

该模板还自带了通过 GitHub Actions 设置的 CI,这将有助于发现您可能遇到的任何构建问题。

使用此模板

  1. 点击 GitHub 上的使用此模板按钮,以该模板为基础创建一个新项目。
  2. 将您新创建的代码库克隆到本地。
  3. 应用修改以复现您的问题。
  4. 将您的代码库链接附加到您正在创建的新 Bug 报告中。