core-api: memoize app element traversal and validation

This commit is contained in:
Patrik Oldsberg
2020-12-17 17:48:57 +01:00
parent c35554dc4c
commit c47ec51a94
+14 -11
View File
@@ -242,18 +242,21 @@ export class PrivateAppImpl implements BackstageApp {
[],
);
// Probably want to memo this?
const { routePaths, routeParents, routeObjects } = traverseElementTree({
root: children,
discoverers: [childDiscoverer, routeElementDiscoverer],
collectors: {
routePaths: routePathCollector,
routeParents: routeParentCollector,
routeObjects: routeObjectCollector,
},
});
const { routePaths, routeParents, routeObjects } = useMemo(() => {
const result = traverseElementTree({
root: children,
discoverers: [childDiscoverer, routeElementDiscoverer],
collectors: {
routePaths: routePathCollector,
routeParents: routeParentCollector,
routeObjects: routeObjectCollector,
},
});
validateRoutes(routePaths, routeParents);
validateRoutes(result.routePaths, result.routeParents);
return result;
}, [children]);
const loadedConfig = useConfigLoader(
this.configLoader,