import React, { useState, useRef, useEffect } from 'react'; import './App.css'; import { VideoManagerLocal } from './utils/VideoManagerLocal'; // 引入我们刚刚拆分好的组件 // 注意:确保你的文件名和这里 import 的名字完全一致 import Home from './components/Home'; import FocusPageLocal from './components/FocusPageLocal'; import Achievement from './components/Achievement'; import Records from './components/Records'; import Customise from './components/Customise'; import Help from './components/Help'; function App() { // 定义状态:当前显示哪个页面 const [activeTab, setActiveTab] = useState('home'); // 全局VideoManagerLocal实例和session状态 const videoManagerRef = useRef(null); const [isSessionActive, setIsSessionActive] = useState(false); const [sessionResult, setSessionResult] = useState(null); // 初始化VideoManagerLocal(只创建一次) useEffect(() => { const callbacks = { onSessionStart: () => { setIsSessionActive(true); setSessionResult(null); }, onSessionEnd: (summary) => { console.log("App.jsx: onSessionEnd called"); console.log("App.jsx: Session Summary:", summary); setIsSessionActive(false); if (summary) { console.log("App.jsx: Setting sessionResult with summary"); setSessionResult(summary); } else { console.warn("App.jsx: Summary is null or undefined"); } } }; videoManagerRef.current = new VideoManagerLocal(callbacks); // 清理函数:只在整个App卸载时才清理 return () => { if (videoManagerRef.current) { videoManagerRef.current.stopStreaming(); } }; }, []); // 页面切换时保持session连接,不自动断开 return (