refactor(RunnerModal): 替换窗口尺寸获取逻辑以精简代码

移除原有的window尺寸状态和手动监听的订阅逻辑,改用useWindowDimensions hook获取窗口尺寸,减少冗余代码
This commit is contained in:
yangxiangyuan
2026-07-30 09:37:03 +08:00
parent 398758800e
commit 1bf6d71201
@@ -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<RunnerModalProps> = ({ runner, onClose }) =>
// 保持屏幕常亮
useKeepAwake();
const [windowSize, setWindowSize] = useState<ScaledSize>(() => 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;
// 进入后台时保存状态