diff --git a/app/(tabs)/ask.tsx b/app/(tabs)/ask.tsx index 95a16ee..b494bb6 100644 --- a/app/(tabs)/ask.tsx +++ b/app/(tabs)/ask.tsx @@ -136,24 +136,24 @@ export default function AskScreen() { // 使用新的WebSocket流处理hook,使用实时模式 const { subscribeToWebSocket } = useWebSocketStreamHandler({ setUserMessages, - isMounted: isMountedRef.current, + isMounted: true, // 传递静态值,hook内部会使用ref跟踪 enableBatching: false // AskScreen使用实时模式 }); - // useFocusEffect( - // useCallback(() => { - // isMountedRef.current = true; + useFocusEffect( + useCallback(() => { + isMountedRef.current = true; - // // 订阅WebSocket消息 - // const unsubscribe = subscribeToWebSocket(); + // 订阅WebSocket消息 + const unsubscribe = subscribeToWebSocket(); - // return () => { - // // 取消订阅和执行清理 - // unsubscribe(); - // cleanup(); - // }; - // }, [subscribeToWebSocket, cleanup]) - // ); + return () => { + // 取消订阅和执行清理 + unsubscribe(); + cleanup(); + }; + }, [subscribeToWebSocket, cleanup]) + ); // 创建动画样式 const welcomeStyle = useAnimatedStyle(() => { @@ -218,6 +218,13 @@ export default function AskScreen() { } }, [sessionId]) ); + + // 组件卸载时的清理 + useEffect(() => { + return () => { + cleanup(); + }; + }, [cleanup]); return ( diff --git a/components/ask/send.tsx b/components/ask/send.tsx index 2f51d4e..9209e53 100644 --- a/components/ask/send.tsx +++ b/components/ask/send.tsx @@ -44,7 +44,7 @@ export default function SendMessage(props: Props) { // 使用新的WebSocket流处理hook,启用批量处理模式 const { subscribeToWebSocket, cleanup } = useWebSocketStreamHandler({ setUserMessages, - isMounted: isMountedRef.current, + isMounted: true, // 传递静态值,hook内部会使用ref跟踪 enableBatching: true, renderInterval: RENDER_INTERVAL });