React 组件名称

了解 Sentry 的 React SDK 如何帮助您监控组件。

Sentry 帮助您捕获 React 组件并解锁应用程序中的更多见解。您可以设置它以使用 React 组件名称而不是选择器。

因此,您可以查看组件名称而不是这样的选择器:

Copied
button.en302zp1.app-191aavw.e16hd6vm2[role="button"][data-test-id="common-options"]

您可以确切地看到使用了哪个 React 组件,例如:

Copied
CommonOptions

您可以通过 Babel 插件 捕获应用程序中的 React 组件名称,这可以解锁强大的工作流并减少歧义。例如,您可以搜索特定 React 组件被点击的重放。您还可以在 Sentry 的 性能 页面的面包屑和 span 中看到被点击的组件名称。这显著减少了通过查看元素的 CSS 选择器(在压缩后变得更加模糊)来确定哪个元素被交互的歧义。

我们正在努力在未来发布更多利用组件名称捕获的功能,并强烈建议您配置项目以使用它。

您可以通过两种不同的方式在应用程序中设置 React 组件名称捕获:

  1. 安装 Sentry 的打包插件
  2. 直接安装 @sentry/babel-plugin-component-annotate

我们建议使用第一种选项,因为 Sentry 打包插件附带了许多其他有用的功能来丰富您的 Sentry 工作流,包括:自动上传 source map、创建发布版本、自动发现发布名称和发布注入。

使用打包插件设置

按照您项目使用的打包工具的 npm 页面上的说明进行操作:

请注意,尽管存在 esbuild 的 Sentry 打包插件,但目前不支持 React 组件名称捕获。

按照说明安装打包插件并将其添加到打包工具的配置中后,通过将标志设置为 true 来启用组件名称捕获:

Copied
// Example specific to Vite, see documentation for other bundlers
sentryVitePlugin({
    // ... other options above
    reactComponentAnnotation: { enabled: true }
}),

现在,您将能够在面包屑、span 中看到组件名称,并通过组件名称搜索重放。 有关通过组件名称搜索重放的更多信息,请参阅 此页面

Babel 插件在构建时解析应用程序的 JSX 源代码,并在其上应用额外的 data 属性。这些属性随后出现在应用程序构建的 HTML 的 DOM 节点上,指示每个节点源自哪个 React 组件和文件。

例如,如果您有一个名为 MyAwesomeComponent 的组件,位于 myAwesomeComponent.jsx 文件中:

Copied
function MyAwesomeComponent() {
  return <div>This is a really cool and awesome component!</div>;
}

在您的打包工具应用插件并构建项目后,生成的 DOM 节点将如下所示:

Copied
<div
  data-sentry-component="MyAwesomeComponent"
  data-sentry-source-file="myAwesomeComponent.jsx"
>
  This is a really cool and awesome component!
</div>

Sentry 浏览器 SDK 将从这些 data 属性中提取值,并在您的组件被交互时收集这些值。