Специфичные хуки
useWindowDimensions - Возвращает актуальные размеры окна и обновляется при повороте экрана или изменении размеров окна. Хук, подписывается на изменения (при повороте экрана компонент перерендерится).
1234567891011121314151617181920import { useWindowDimensions, View, Text } from 'react-native';function ResponsiveComponent() {const { width, height, scale, fontScale } = useWindowDimensions();// Адаптивная версткаconst isLandscape = width > height;const isTablet = width > 768;return (<View style={{width: width * 0.9, // 90% ширины экранаpadding: width > 500 ? 24 : 16,flexDirection: isLandscape ? 'row' : 'column',}}><Text>Ширина: {width}, Высота: {height}</Text><Text>Масштаб: {scale}, Масштаб шрифта: {fontScale}</Text></View>);}
useColorScheme - Возвращает текущую цветовую схему устройства, установленную пользователем в настройках ОС
12345678910111213141516171819202122mport { useColorScheme, View, Text, StyleSheet } from 'react-native';function ThemedComponent() {const colorScheme = useColorScheme(); // 'light' | 'dark' | nullconst styles = StyleSheet.create({container: {backgroundColor: colorScheme === 'dark' ? '#000' : '#fff',},text: {color: colorScheme === 'dark' ? '#fff' : '#333',},});return (<View style={styles.container}><Text style={styles.text}>Текущая тема: {colorScheme === 'dark' ? '🌙 Темная' : '☀️ Светлая'}</Text></View>);}
useAccessibilityInfo - Позволяет узнать, включены ли на устройстве специальные возможности: экранный диктор (VoiceOver/TalkBack), уменьшенное движение, высокая контрастность и т.д.
1234567891011121314151617181920212223import { useAccessibilityInfo, Text } from 'react-native';function AccessibleComponent() {const {isScreenReaderEnabled, // VoiceOver/TalkBack включен?isReduceMotionEnabled, // уменьшенное движение?isAccessibilityServiceEnabled, // Android: сервис доступности включен?isBoldTextEnabled, // iOS: жирный текст?isGrayscaleEnabled, // iOS: оттенки серого?isInvertColorsEnabled, // iOS: инверсия цветов?} = useAccessibilityInfo();return (<View><Text>{isScreenReaderEnabled && '🔊 Экранный диктор активен'}</Text>{isReduceMotionEnabled && (<Text>♿️ Анимации отключены (используем fade вместо slide)</Text>)}</View>);}