如果使用Hooks,您可以参考这个解决方案:https://dev59.com/CVYN5IYBdhLWcg3wRmeh#61838183
在React Native中,将应用从纵向切换到横向或者反之似乎很简单,但是当视图需要随着屏幕方向的改变而改变时,可能会出现一些棘手的问题。换句话说,在两种不同的屏幕方向下拥有不同的视图,可以通过以下两个步骤来实现。
从React Native导入Dimensions
import { Dimensions } from 'react-native';
识别当前方向并相应地呈现视图
const isPortrait = () => {
const dim = Dimensions.get('screen');
return dim.height >= dim.width;
};
const isLandscape = () => {
const dim = Dimensions.get('screen');
return dim.width >= dim.height;
};
了解屏幕方向何时更改以相应地更改视图
Dimensions.addEventListener('change', () => {
this.setState({
orientation: Platform.isPortrait() ? 'portrait' : 'landscape'
});
});
汇集所有零件
import React from 'react';
import {
StyleSheet,
Text,
Dimensions,
View
} from 'react-native';
export default class App extends React.Component {
constructor() {
super();
const isPortrait = () => {
const dim = Dimensions.get('screen');
return dim.height >= dim.width;
};
this.state = {
orientation: isPortrait() ? 'portrait' : 'landscape'
};
Dimensions.addEventListener('change', () => {
this.setState({
orientation: isPortrait() ? 'portrait' : 'landscape'
});
});
}
render() {
if (this.state.orientation === 'portrait') {
return (
);
}
else {
return (
);
}
}
}
当定义用于检测方向改变的事件时,该命令使用“this.setState()”,此方法会自动再次调用“render()”,因此我们不必担心再次渲染它,所有都已经处理好了。