在React Native中检测屏幕方向的变化可以通过使用Dimensions
API和useEffect
钩子来实现。以下是具体的步骤和示例代码:
import React, { useEffect, useState } from 'react';
import { Dimensions, StyleSheet, Text, View } from 'react-native';
const OrientationDetector = () => {
const [orientation, setOrientation] = useState('portrait');
useEffect(() => {
const handleOrientationChange = ({ window }) => {
const { width, height } = window;
const isPortrait = height > width;
setOrientation(isPortrait ? 'portrait' : 'landscape');
};
Dimensions.addEventListener('change', handleOrientationChange);
// 清理函数
return () => {
Dimensions.removeEventListener('change', handleOrientationChange);
};
}, []);
return (
<View style={styles.container}>
<Text style={styles.text}>Current Orientation: {orientation}</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
text: {
fontSize: 20,
fontWeight: 'bold',
},
});
export default OrientationDetector;
Dimensions.addEventListener('change', handleOrientationChange);
正确添加。useEffect
确保在组件卸载时移除事件监听器,避免内存泄漏。通过上述方法,你可以有效地在React Native应用中检测并响应屏幕方向的变化。
领取专属 10元无门槛券
手把手带您无忧上云