UNPKG

@td-design/rn-hooks

Version:

从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率

51 lines (47 loc) 2.37 kB
'use strict'; 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;