UNPKG

@td-design/rn-hooks

Version:

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

49 lines (46 loc) 2.32 kB
import { __read } from '../_virtual/_tslib.js'; import { useEffect } from 'react'; import { AccessibilityInfo } from 'react-native'; import useSafeState from '../useSafeState/index.js'; function useAccessibilityStateListener(eventName, initializerName) { var _a = __read(useSafeState(undefined), 2), isEnabled = _a[0], setIsEnabled = _a[1]; useEffect(function () { if (!AccessibilityInfo[initializerName]) return; AccessibilityInfo[initializerName]().then(setIsEnabled); var subscription = 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 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, }; } export { useAccessibilityInfo as default };