@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
51 lines (47 loc) • 2.37 kB
JavaScript
;
var _tslib = require('../_virtual/_tslib.js');
var react = require('react');
var reactNative = require('react-native');
var index = require('../useSafeState/index.js');
function useAccessibilityStateListener(eventName, initializerName) {
var _a = _tslib.__read(index(undefined), 2), isEnabled = _a[0], setIsEnabled = _a[1];
react.useEffect(function () {
if (!reactNative.AccessibilityInfo[initializerName])
return;
reactNative.AccessibilityInfo[initializerName]().then(setIsEnabled);
var subscription = reactNative.AccessibilityInfo.addEventListener(eventName, setIsEnabled);
return function () {
if (typeof (subscription === null || subscription === void 0 ? void 0 : subscription.remove) === 'function') {
subscription.remove();
}
else {
// @ts-ignore - need update @types/react-native@0.65.x
reactNative.AccessibilityInfo.removeEventListener(eventName, setIsEnabled);
}
};
}, [eventName, initializerName, setIsEnabled]);
return isEnabled;
}
function useAccessibilityInfo() {
// 字体加粗(IOS)
var boldTextEnabled = useAccessibilityStateListener('boldTextChanged', 'isBoldTextEnabled');
// 灰色模式(IOS。色盲使用)
var grayscaleEnabled = useAccessibilityStateListener('grayscaleChanged', 'isGrayscaleEnabled');
// 反转显示屏的颜色(IOS)
var invertColorsEnabled = useAccessibilityStateListener('invertColorsChanged', 'isInvertColorsEnabled');
// 减弱动态效果
var reduceMotionEnabled = useAccessibilityStateListener('reduceMotionChanged', 'isReduceMotionEnabled');
// 降低透明度 (IOS)
var reduceTransparencyEnabled = useAccessibilityStateListener('reduceTransparencyChanged', 'isReduceTransparencyEnabled');
// 是否启用读屏应用
var screenReaderEnabled = useAccessibilityStateListener('screenReaderChanged', 'isScreenReaderEnabled');
return {
screenReaderEnabled: screenReaderEnabled,
grayscaleEnabled: grayscaleEnabled,
invertColorsEnabled: invertColorsEnabled,
reduceMotionEnabled: reduceMotionEnabled,
reduceTransparencyEnabled: reduceTransparencyEnabled,
boldTextEnabled: boldTextEnabled,
};
}
module.exports = useAccessibilityInfo;