Fixes #25709 Memoize filtered entity graph nodes

Signed-off-by: Jordan Slott <jordan.slott@twosigma.com>
This commit is contained in:
Jordan Slott
2024-07-21 15:31:35 -04:00
parent 70c0ac43cd
commit fba7537ad1
2 changed files with 13 additions and 4 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-graph': patch
---
Memoize entity graph nodes when applying an `entityFilter` to prevent repeated redraws
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { Entity } from '@backstage/catalog-model';
import { useEffect } from 'react';
import { useEffect, useMemo } from 'react';
import { useEntityStore } from './useEntityStore';
import { pickBy } from 'lodash';
@@ -104,9 +104,13 @@ export function useEntityRelationGraph({
requestEntities,
]);
const filteredEntities = entityFilter
? pickBy(entities, (value, _key) => entityFilter(value))
: entities;
const filteredEntities = useMemo(
() =>
entityFilter
? pickBy(entities, (value, _key) => entityFilter(value))
: entities,
[entities, entityFilter],
);
return {
entities: filteredEntities,