feat(ui): misc perf/rerender improvements

More efficient selectors, memoized/stable references to objects, lazy popover/menu rendering.
This commit is contained in:
psychedelicious
2023-12-30 23:55:39 +11:00
committed by Kent Keirsey
parent 2ba505cce9
commit 539887b215
8 changed files with 345 additions and 332 deletions

View File

@ -11,20 +11,15 @@ export const useNodeNeedsUpdate = (nodeId: string) => {
createMemoizedSelector(stateSelector, ({ nodes }) => {
const node = nodes.nodes.find((node) => node.id === nodeId);
const template = nodes.nodeTemplates[node?.data.type ?? ''];
return { node, template };
if (isInvocationNode(node) && template) {
return getNeedsUpdate(node, template);
}
return false;
}),
[nodeId]
);
const { node, template } = useAppSelector(selector);
const needsUpdate = useMemo(
() =>
isInvocationNode(node) && template
? getNeedsUpdate(node, template)
: false,
[node, template]
);
const needsUpdate = useAppSelector(selector);
return needsUpdate;
};