kibana/packages/shared-ux/router/impl
2022-11-07 15:10:42 -06:00
..
__snapshots__ [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
BUILD.bazel [auto] migrate existing plugin/package configs 2022-10-28 14:06:46 -05:00
index.ts [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
jest.config.js [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
kibana.jsonc rename codeowners from shared-ux to global-experience 2022-11-07 15:10:42 -06:00
package.json [auto] migrate existing plugin/package configs 2022-10-28 14:06:46 -05:00
README.mdx [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
router.test.tsx [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
router.tsx [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
services.ts [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
tsconfig.json fix(NA): wrongly spread stripInternal and rootDir configs across packages (#144463) 2022-11-03 01:04:55 +00:00
types.ts [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00
use_execution_context.ts [Shared UX] Migrate router from kibana react to shared ux (#138544) 2022-09-09 11:21:17 -07:00

---
id: sharedUX/Router
slug: /shared-ux/router
title: Router
description: A router component
tags: ['shared-ux', 'component', 'router', 'route']
date: 2022-08-12
---

## Summary
This is a wrapper around the `react-router-dom` Route component that inserts MatchPropagator in every application route. It helps track all route changes and send them to the execution context, later used to enrich APM 'route-change' transactions.
The component does not require any props and accepts props from the RouteProps interface such as a `path`, or a component like `AppContainer`. 


```jsx 
<Route path="/url" />
```

### Explanation of RouteProps

```jsx
export interface RouteProps {
    location?: H.Location; 
    component?: React.ComponentType<RouteComponentProps<any>> | React.ComponentType<any>; 
    render?: (props: RouteComponentProps<any>) => React.ReactNode; 
    children?: ((props: RouteChildrenProps<any>) => React.ReactNode) | React.ReactNode; 
    path?: string | string[]; 
    exact?: boolean; 
    sensitive?: boolean; 
    strict?: boolean; 
}
```

All props are optional 

| Prop Name | Prop Type | Description |
|---|---|---|
| `location` | `H.Location` | the location of one instance of history |
| `component` | `React.ComponentType<RouteComponentProps<any>>` or `React.ComponentType<any>;` | a react component |
| `render` | `(props: RouteComponentProps<any>) => React.ReactNode;` | render props to a react node|
| `children` | `((props: RouteChildrenProps<any>) => React.ReactNode)` or `React.ReactNode;` | pass children to a react node |
| `path` | `string` or `string[];` | a url path or array of paths |
| `exact` | `boolean` | exact match for a route (see: https://stackoverflow.com/questions/52275146/usage-of-exact-and-strict-props) |
| `sensitive` | `boolean` | case senstive route |
| `strict` | `boolean` | strict entry of the requested path in the path name |



This component removes the need for manual calls to `useExecutionContext` and they should be removed. 

## EUI Promotion Status

This component is not currently considered for promotion to EUI.