Merge pull request #4718 from xyflow/fix/use-nodes-data
fix useNodesData returning undefined in svelte flow
This commit is contained in:
5
.changeset/brave-worms-study.md
Normal file
5
.changeset/brave-worms-study.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@xyflow/svelte': patch
|
||||
---
|
||||
|
||||
Fixed hook useNodesData unexpectedly returning undefined
|
||||
@@ -21,7 +21,7 @@ export type UppercaseNode = Node<{ text: string }, 'uppercase'>;
|
||||
export type MyNode = TextNode | ResultNode | UppercaseNode;
|
||||
|
||||
export function isTextNode(node: any): node is TextNode | UppercaseNode {
|
||||
return node.type === 'text' || node.type === 'uppercase';
|
||||
return !node || !node.type ? false : node.type === 'text' || node.type === 'uppercase';
|
||||
}
|
||||
|
||||
const nodeTypes = {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
type ResultNodeType = Node<{}, 'result'>;
|
||||
|
||||
export function isTextNode(node: any): node is TextNodeType | UppercaseNode {
|
||||
return node.type === 'text' || node.type === 'uppercase';
|
||||
return !node || !node.type ? false : node.type === 'text' || node.type === 'uppercase';
|
||||
}
|
||||
|
||||
export type MyNode = TextNodeType | UppercaseNodeType | ResultNodeType;
|
||||
|
||||
@@ -22,6 +22,7 @@ export function useNodesData(nodeIds: any): any {
|
||||
const { nodes, nodeLookup } = useStore();
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
let prevNodesData: any[] = [];
|
||||
let initialRun = true;
|
||||
|
||||
return derived([nodes, nodeLookup], ([, nodeLookup], set) => {
|
||||
const nextNodesData = [];
|
||||
@@ -39,9 +40,10 @@ export function useNodesData(nodeIds: any): any {
|
||||
}
|
||||
}
|
||||
|
||||
if (!shallowNodeData(nextNodesData, prevNodesData)) {
|
||||
if (!shallowNodeData(nextNodesData, prevNodesData) || initialRun) {
|
||||
prevNodesData = nextNodesData;
|
||||
set(isArrayOfIds ? nextNodesData : nextNodesData[0] ?? null);
|
||||
initialRun = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user