refactor: performance
This commit is contained in:
@@ -82,7 +82,7 @@ export function useAbstractNode<TData = Record<string, unknown>>(
|
||||
): AbstractNodeContext<TData> {
|
||||
const graphCtx = useContext(GraphContext)
|
||||
const pathCtx = useContext(ConnectionPathContext)
|
||||
const nodes = graphCtx?.nodes ?? []
|
||||
const nodes = graphCtx?.graphRef?.current?.nodes ?? []
|
||||
const edges = graphCtx?.edges ?? []
|
||||
const setNodes = graphCtx?.setNodes
|
||||
const setEdges = graphCtx?.setEdges
|
||||
|
||||
@@ -25,14 +25,20 @@ export type FlowActions = {
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Graph context (nodes, edges, setters)
|
||||
// Graph context (setters + graphRef for reads; edges in context so edge changes trigger re-renders)
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
export type GraphContextRef = {
|
||||
current: { nodes: AppNode[]; edges: AppEdge[] }
|
||||
}
|
||||
|
||||
export type GraphContextValue = {
|
||||
nodes: AppNode[]
|
||||
setNodes: (updater: AppNode[] | ((prev: AppNode[]) => AppNode[])) => void
|
||||
edges: AppEdge[]
|
||||
setEdges: (updater: AppEdge[] | ((prev: AppEdge[]) => AppEdge[])) => void
|
||||
/** Current nodes/edges; updated every render. Read from here to avoid re-rendering on position-only changes. */
|
||||
graphRef: GraphContextRef
|
||||
/** Edges in context so consumers (e.g. edge indicators, useAbstractNode) re-render when edges change. */
|
||||
edges: AppEdge[]
|
||||
}
|
||||
|
||||
const GraphContext = React.createContext<GraphContextValue | null>(null)
|
||||
|
||||
Reference in New Issue
Block a user