fix: 解决拖拽时节点详情窗口异常问题
This commit is contained in:
@@ -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,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user