@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
34 lines (31 loc) • 1.24 kB
JavaScript
import { __read } from '../_virtual/_tslib.js';
import { useEffect } from 'react';
import { Dimensions } from 'react-native';
import useSafeState from '../useSafeState/index.js';
var initialValue = {
window: Dimensions.get('window'),
screen: Dimensions.get('screen'),
};
function useDimensions() {
var _a = __read(useSafeState(initialValue), 2), dimensions = _a[0], setDimensions = _a[1];
useEffect(function () {
function onChange(_a) {
var window = _a.window, screen = _a.screen;
setDimensions({ window: window, screen: screen });
}
var subscription = Dimensions.addEventListener('change', onChange);
return function () {
// @ts-ignore - React Native >= 0.65
if (typeof (subscription === null || subscription === void 0 ? void 0 : subscription.remove) === 'function') {
// @ts-ignore - need update @types/react-native@0.65.x
subscription.remove();
}
else {
// @ts-ignore React Native < 0.65
Dimensions.removeEventListener('change', onChange);
}
};
}, [setDimensions]);
return dimensions;
}
export { useDimensions as default };