Fixes #25709 Memoize filtered entity graph nodes
Signed-off-by: Jordan Slott <jordan.slott@twosigma.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user