React Navigation

了解如何使用 Sentry 的 React Navigation instrumentation。

Sentry 的 React Native SDK 包含了对 React Navigation 的 instrumentation。这使您可以查看导航转换的性能以及在导航过程中发生的错误。本页面将指导您完成 instrumentation 的设置并根据需要进行配置。

以下代码片段展示了如何初始化 instrumentation。

Copied
import * as Sentry from "@sentry/react-native";
import { NavigationContainer } from "@react-navigation/native";

const navigationIntegration = Sentry.reactNavigationIntegration({
  enableTimeToInitialDisplay: true,
});

Sentry.init({
  dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
  integrations: [navigationIntegration],
})

function App = () => {
  const containerRef = React.useRef();

  return (
    <NavigationContainer
      ref={containerRef}
      onReady={() => {
        navigationIntegration.registerNavigationContainer(containerRef);
      }}>
    </NavigationContainer>
  );
};

您可以通过向构造函数传递一个选项对象来配置 instrumentation:

Copied
Sentry.reactNavigationIntegration({
  enableTimeToInitialDisplay: true, // default: false
  routeChangeTimeoutMs: 1_000, // default: 1_000
  ignoreEmptyBackNavigationTransactions: true, // default: true
});

此选项指定在路由更改发起后,instrumentation 等待路由挂载的时间。如果在此时间内路由未挂载,事务将被丢弃。默认值是 1_000 毫秒。

此选项将启用每个路由的首次显示时间的自动测量。了解更多请参阅 首次显示时间。默认值是 false

此选项确保来自已见过且没有任何跨度的路由的事务不会被采样。这减少了大量杂乱数据,使得大多数返回导航事务现在被忽略。默认值是 true

  • 此 instrumentation 支持 React Navigation 版本 5 及以上。从 SDK 版本 6 开始,React Navigation 版本 4 将不再被支持。请升级。

  • 此 instrumentation 在每次路由更改时(包括 goBack 导航)都会创建一个事务。

  • 如果您是从 2.3.0 之前的版本升级,请确保更新 registerNavigationContainer 的调用位置。更多详细说明请参阅 我们的迁移指南