Jer*_*gle 1 javascript reactjs react-native
下面的当前代码将获取方向,但是如果设备处于横向视图并且您打开应用程序,它将显示纵向视图。手动旋转设备后,下面的代码可以正常工作如何在应用程序启动时获取设备的方向。#React #React Native
const ViewControllerProvider = (props) => {
const [orientation, setOrientation] = useState('PORTRAIT');
useEffect(() => {
Dimensions.addEventListener('change', ({window: {width, height}}) => {
if (width < height) {
setOrientation('PORTRAIT');
} else {
setOrientation('LANDSCAPE');
}
});
}, []);
return (
<ViewControllerContext.Provider value={{orientation}}>
{props.children}
</ViewControllerContext.Provider>
);
};
export {ViewControllerProvider, ViewControllerContext};
Run Code Online (Sandbox Code Playgroud)
添加监听器时,您还可以手动调用来获取初始方向:
const [orientation, setOrientation] = useState('LANDSCAPE');
const determineAndSetOrientation = () => {
let width = Dimensions.get('window').width;
let height = Dimensions.get('window').height;
if (width < height) {
setOrientation('PORTRAIT');
} else {
setOrientation('LANDSCAPE');
}
}
useEffect(() => {
determineAndSetOrientation();
Dimensions.addEventListener('change', determineAndSetOrientation);
return () => {
Dimensions.removeEventListener('change', determineAndSetOrientation)
}
}, []);
Run Code Online (Sandbox Code Playgroud)
删除事件侦听器也可能是个好主意(请参阅return声明)。
| 归档时间: |
|
| 查看次数: |
6426 次 |
| 最近记录: |