From 1bf6d712010cf073a50d0bdf27ffce76bd858b39 Mon Sep 17 00:00:00 2001 From: yangxiangyuan Date: Thu, 30 Jul 2026 09:37:03 +0800 Subject: [PATCH] =?UTF-8?q?refactor(RunnerModal):=20=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E5=B0=BA=E5=AF=B8=E8=8E=B7=E5=8F=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BB=A5=E7=B2=BE=E7=AE=80=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除原有的window尺寸状态和手动监听的订阅逻辑,改用useWindowDimensions hook获取窗口尺寸,减少冗余代码 --- .../components/RunnerModal.tsx | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/apps/app_order_box/kits/motion_reminder/components/RunnerModal.tsx b/apps/app_order_box/kits/motion_reminder/components/RunnerModal.tsx index 03e24c2..2fce660 100644 --- a/apps/app_order_box/kits/motion_reminder/components/RunnerModal.tsx +++ b/apps/app_order_box/kits/motion_reminder/components/RunnerModal.tsx @@ -1,12 +1,11 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; import { Alert, - Dimensions, Modal, - ScaledSize, StyleSheet, Text, TouchableOpacity, + useWindowDimensions, View, } from 'react-native'; import { useKeepAwake } from 'expo-keep-awake'; @@ -33,22 +32,9 @@ export const RunnerModal: React.FC = ({ runner, onClose }) => // 保持屏幕常亮 useKeepAwake(); - const [windowSize, setWindowSize] = useState(() => Dimensions.get('window')); - useEffect(() => { - const listener = ({ window }: { window: ScaledSize }) => setWindowSize(window); - const subscription = Dimensions.addEventListener('change', listener); - return () => { - if (subscription && typeof subscription.remove === 'function') { - subscription.remove(); - } else { - try { - Dimensions.removeEventListener('change', listener); - } catch (e) { /* noop */ } - } - }; - }, []); - const isLandscape = useMemo(() => windowSize.width > windowSize.height, [windowSize]); - const isWide = windowSize.width >= 900; + const { width: windowWidth, height: windowHeight } = useWindowDimensions(); + const isLandscape = useMemo(() => windowWidth > windowHeight, [windowWidth, windowHeight]); + const isWide = windowWidth >= 900; const splitMode = isLandscape || isWide; // 进入后台时保存状态