fix(frontend): clean up voice preview listeners

This commit is contained in:
Xin Wang
2026-08-03 12:30:49 +08:00
parent 841d7b8fac
commit b0991f239e
4 changed files with 48 additions and 5 deletions

View File

@@ -176,6 +176,10 @@ export function WorkflowCanvas({
const [addOpen, setAddOpen] = useState(false);
const [addSourceId, setAddSourceId] = useState<string | null>(null);
const [addPosition, setAddPosition] = useState<{ x: number; y: number } | null>(null);
// Fast Refresh 会替换模块级对象,而保留 React Flow 实例。用 state 固定本次
// 挂载使用的映射,避免热更新后被误判为每次渲染都在创建新对象。
const [flowNodeTypes] = useState(nodeTypes);
const [flowEdgeTypes] = useState(edgeTypes);
const { screenToFlowPosition } = useReactFlow();
// 只在可持久化的画布内容真正变化时回传。React Flow 挂载时会写入节点尺寸等
@@ -569,8 +573,8 @@ export function WorkflowCanvas({
<ReactFlow
nodes={nodes}
edges={edges}
nodeTypes={nodeTypes}
edgeTypes={edgeTypes}
nodeTypes={flowNodeTypes}
edgeTypes={flowEdgeTypes}
onNodesChange={handleNodesChange}
onEdgesChange={onEdgesChange}
onConnect={onConnect}