refactor(RunnerModal): 替换窗口尺寸获取逻辑以精简代码
移除原有的window尺寸状态和手动监听的订阅逻辑,改用useWindowDimensions hook获取窗口尺寸,减少冗余代码
This commit is contained in:
@@ -1,12 +1,11 @@
|
|||||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
import React, { useCallback, useEffect, useMemo } from 'react';
|
||||||
import {
|
import {
|
||||||
Alert,
|
Alert,
|
||||||
Dimensions,
|
|
||||||
Modal,
|
Modal,
|
||||||
ScaledSize,
|
|
||||||
StyleSheet,
|
StyleSheet,
|
||||||
Text,
|
Text,
|
||||||
TouchableOpacity,
|
TouchableOpacity,
|
||||||
|
useWindowDimensions,
|
||||||
View,
|
View,
|
||||||
} from 'react-native';
|
} from 'react-native';
|
||||||
import { useKeepAwake } from 'expo-keep-awake';
|
import { useKeepAwake } from 'expo-keep-awake';
|
||||||
@@ -33,22 +32,9 @@ export const RunnerModal: React.FC<RunnerModalProps> = ({ runner, onClose }) =>
|
|||||||
// 保持屏幕常亮
|
// 保持屏幕常亮
|
||||||
useKeepAwake();
|
useKeepAwake();
|
||||||
|
|
||||||
const [windowSize, setWindowSize] = useState<ScaledSize>(() => Dimensions.get('window'));
|
const { width: windowWidth, height: windowHeight } = useWindowDimensions();
|
||||||
useEffect(() => {
|
const isLandscape = useMemo(() => windowWidth > windowHeight, [windowWidth, windowHeight]);
|
||||||
const listener = ({ window }: { window: ScaledSize }) => setWindowSize(window);
|
const isWide = windowWidth >= 900;
|
||||||
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 splitMode = isLandscape || isWide;
|
const splitMode = isLandscape || isWide;
|
||||||
|
|
||||||
// 进入后台时保存状态
|
// 进入后台时保存状态
|
||||||
|
|||||||
Reference in New Issue
Block a user