fix: 解决拖拽时节点详情窗口异常问题

This commit is contained in:
2026-04-06 15:30:02 +08:00
parent 57eaaaffee
commit cb8f7f6cbe
6 changed files with 234 additions and 139 deletions
+24 -6
View File
@@ -26,16 +26,16 @@ export const useGraphData = () => {
// 如果后端返回空数据,使用示例数据
if (data.nodes.length === 0) {
setGraphData(SAMPLE_GRAPH_DATA);
setGraphData({ ...SAMPLE_GRAPH_DATA, id: `sample-${Date.now()}` });
} else {
setGraphData(data);
setGraphData({ ...data, id: `data-${Date.now()}` });
}
} catch (error) {
console.error('Failed to load graph data:', error);
// 重置颜色分配缓存
resetColorAssignment();
// API 失败时使用示例数据作为降级方案
setGraphData(SAMPLE_GRAPH_DATA);
setGraphData({ ...SAMPLE_GRAPH_DATA, id: `fallback-${Date.now()}` });
} finally {
setLoading(false);
}
@@ -59,17 +59,36 @@ export const useGraphData = () => {
// 通过 ID 选择节点(用于搜索结果点击)
const handleNodeSelectById = useCallback((nodeId: string) => {
console.log('[useGraphData] handleNodeSelectById called with id:', nodeId);
const node = graphData.nodes.find((n: Node) => n.id === nodeId);
console.log('[useGraphData] Found node:', node);
if (node) {
console.log('[useGraphData] Setting selectedNode:', node);
setSelectedNode(node);
} else {
console.log('[useGraphData] Node not found with id:', nodeId);
}
}, [graphData.nodes]);
// 选择节点(用于图谱点击)
const handleNodeSelect = useCallback((node: Node) => {
const handleNodeSelect = useCallback((node: Node | null) => {
console.log('[useGraphData] handleNodeSelect called with node:', node);
console.log('[useGraphData] About to call setSelectedNode');
setSelectedNode(node);
console.log('[useGraphData] setSelectedNode called');
}, []);
// 悬停节点(用于图谱悬停)
const handleNodeHover = useCallback((node: Node | null) => {
setHoveredNode(node);
}, []);
// 监听 selectedNode 变化,用于调试
useEffect(() => {
console.log('[useGraphData] selectedNode state changed:', selectedNode);
console.log('[useGraphData] selectedNode truthiness:', !!selectedNode);
}, [selectedNode]);
// 组件挂载时加载数据
useEffect(() => {
loadGraphData();
@@ -81,11 +100,10 @@ export const useGraphData = () => {
hoveredNode,
searchResults,
loading,
setHoveredNode,
setSelectedNode,
setSearchResults,
handleSearch,
handleNodeSelectById,
handleNodeSelect,
handleNodeHover,
};
};