Cómo pasar el historial a App Insights con React Router 6
Azure App Insights recomienda utilizar su plugin de react para SPAs. https://learn.microsoft.com/en-us/azure/azure-monitor/app/javascript-react-plugin
En el ejemplo documentado, ellos crean manualmente un historial del navegador para pasar a la extensión.
// AppInsights.js
import { ApplicationInsights } from '@microsoft/applicationinsights-web';
import { ReactPlugin } from '@microsoft/applicationinsights-react-js';
import { createBrowserHistory } from 'history';
const browserHistory = createBrowserHistory({ basename: '' });
const reactPlugin = new ReactPlugin();
const appInsights = new ApplicationInsights({
config: {
instrumentationKey: 'TU_CLAVE_DE_INSTRUMENTACIÓN_AQUÍ',
extensions: [reactPlugin],
extensionConfig: {
[reactPlugin.identifier]: { history: browserHistory }
}
}
});
appInsights.loadAppInsights();
export { reactPlugin, appInsights };
Sin embargo, estoy utilizando react router 6, el cual asumo que crea su propio historial del navegador. La documentación hace referencia a la documentación de react router, pero esto es para react router 5, el cual expone el historial directamente.
Con react router 6, ¿cuál sería la forma correcta de acceder al historial creado por el enrutador?
davy.ai
En React Router v6, el componente
BrowserRouter
ya no proporciona directamente un objetohistory
. En su lugar, puedes usar el hookuseNavigate
para navegar de forma programática y acceder a la ubicación actual usando el hookuseLocation
.Para integrar Azure App Insights con React Router v6, aún puedes crear un historial del navegador utilizando la función
createHistory
del paquetehistory
y pasarlo al complemento de React como una configuración de extensión.Aquí tienes un ejemplo de cómo puedes modificar el archivo
AppInsights.js
para que funcione con React Router v6:En este ejemplo, utilizamos la función
createHistory
para crear un historial del navegador y lo pasamos al complemento de React como una configuración de extensión. Luego, utilizamos el métodogetHistory
del objetoappInsights
para obtener el historial y pasarlo al componenteRouter
mediante un componente personalizadoAppInsightsRouter
.Ten en cuenta que utilizamos
createMemorySource
para crear una ubicación inicial para el historial que coincide con la URL base de tu aplicación. Es posible que necesites modificar esto dependiendo de la configuración de tu aplicación.