Enforcing RouteRefs more: docs, templates, types

This commit is contained in:
Ivan Shmidt
2020-06-03 16:40:13 +02:00
parent 239c1a0e3f
commit 0a13a11f7b
6 changed files with 102 additions and 21 deletions
+10 -4
View File
@@ -43,13 +43,19 @@ In the root folder you have some configuration for typescript and jest, the test
In the `src` folder we get to the interesting bits. Check out the `plugin.ts`:
```jsx
import { createPlugin } from '@backstage/core';
import { createPlugin, createRouteRef } from '@backstage/core';
import ExampleComponent from './components/ExampleComponent';
export default createPlugin({
id: 'new-plugin',
export const rootRouteRef = createRouteRef({
icon: () => null,
path: '/{{ id }}',
title: '{{ id }}',
});
export const plugin = createPlugin({
id: '{{ id }}',
register({ router }) {
router.registerRoute('/new-plugin', ExampleComponent);
router.addRoute(rootRouteRef, ExampleComponent);
},
});
```
+40 -13
View File
@@ -1,21 +1,48 @@
# createPlugin - router
The router that is passed to the `register` function includes makes it possible for plugins to hook into routing of the Backstage app and provide the end users with new views to navigate to.
The router that is passed to the `register` function makes it possible for plugins to hook into routing of the Backstage app and provide the end users with new views to navigate to.
This is done by utilising the following methods on the `router`:
```typescript
type RouterHooks = {
registerRoute(
path: RoutePath,
Component: ComponentType<any>,
options?: RouteOptions,
): void;
addRoute(
target: RouteRef,
Component: ComponentType<any>,
options?: RouteOptions,
): void;
registerRedirect(
path: RoutePath,
target: RoutePath,
options?: RouteOptions,
): void;
};
addRedirect(from: RouteRef, to: RouteRef, options?: RouteOptions): void;
/**
* @deprecated See the `addRoute` method
*/
registerRoute(
path: RoutePath,
Component: ComponentType<any>,
options?: RouteOptions,
): void;
/**
* @deprecated See the `addRedirect` method
*/
registerRedirect(
path: RoutePath,
target: RoutePath,
options?: RouteOptions,
): void;
```
## RouteRef
Both `addRoute` and `addRedirect` methods are using mutable RouteRefs, which can be created as following:
```ts
import { createRouteRef } from '@backstage/core';
const myPluginRouteRef = createRouteRef({
icon: () => null, // You can set an icon for your route
path: '/my-plugin',
title: 'My Plugin',
});
```
[Back to References](README.md)