Skip to content

Commit d6e2cb7

Browse files
fix(ui): use memoized selector for workflow watcher
Minor perf improvement.
1 parent 0809e83 commit d6e2cb7

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

invokeai/frontend/web/src/features/nodes/hooks/useWorkflowWatcher.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import { createSelector } from '@reduxjs/toolkit';
12
import { useAppSelector } from 'app/store/storeHooks';
3+
import { selectNodesSlice } from 'features/nodes/store/nodesSlice';
4+
import { selectWorkflowSlice } from 'features/nodes/store/workflowSlice';
25
import type { WorkflowV2 } from 'features/nodes/types/workflow';
36
import type { BuildWorkflowArg } from 'features/nodes/util/workflow/buildWorkflow';
47
import { buildWorkflowFast } from 'features/nodes/util/workflow/buildWorkflow';
@@ -12,12 +15,14 @@ const debouncedBuildWorkflow = debounce((arg: BuildWorkflowArg) => {
1215
$builtWorkflow.set(buildWorkflowFast(arg));
1316
}, 300);
1417

18+
const selectWorkflowSlices = createSelector(
19+
selectNodesSlice,
20+
selectWorkflowSlice,
21+
(nodes, workflow) => ({ nodes: nodes.nodes, edges: nodes.edges, workflow })
22+
);
23+
1524
export const useWorkflowWatcher = () => {
16-
const buildWorkflowArg = useAppSelector(({ nodes, workflow }) => ({
17-
nodes: nodes.nodes,
18-
edges: nodes.edges,
19-
workflow,
20-
}));
25+
const buildWorkflowArg = useAppSelector(selectWorkflowSlices);
2126

2227
useEffect(() => {
2328
debouncedBuildWorkflow(buildWorkflowArg);

0 commit comments

Comments
 (0)