React Native - это мобильная разработка, основанная на React, которую мы можем использовать для разработки мобильных приложений.

В этой статье мы рассмотрим, как использовать его для создания приложения с React Native.

Доступность

Мы можем добавить к нашим компонентам опоры, чтобы сделать их доступными для вспомогательных технологий.

Например, мы можем написать:

import React from 'react';
import { Text, View } from 'react-native';
export default function App() {
  return (
    <View accessible={true}>
      <Text>text one</Text>
      <Text>text two</Text>
    </View>
  );
}

Мы устанавливаем свойство accessible на true, чтобы сделать View доступным.

AccessbilityLabel

Кроме того, мы можем добавить к нашему компоненту опору accessibilityLevel, чтобы сделать его доступным.

Например, мы можем написать:

import React from 'react';
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
export default function App() {
  return (
    <View accessible={true} style={styles.container}>
      <TouchableOpacity
        accessible={true}
        accessibilityLabel="Tap me!"
        onPress={() => alert('hello world')}>
        <View>
          <Text>Press me!</Text>
        </View>
      </TouchableOpacity>
    </View>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

чтобы добавить компонент TouchableOpacity, имеющий свойство accessbilityLabel, чтобы программы чтения с экрана могли идентифицировать кнопку.

Мы также можем добавить опору accessibilityHint, чтобы пользователь мог понять, что делает кнопка.

Например, мы можем написать:

import React from 'react';
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
export default function App() {
  return (
    <View accessible={true} style={styles.container}>
      <TouchableOpacity
        accessible={true}
        accessibilityLabel="Tap me!"
        accessibilityHint="Shows alert"
        onPress={() => alert('hello world')}>
        <View>
          <Text>Press me!</Text>
        </View>
      </TouchableOpacity>
    </View>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

доступность

Свойство accessibilityLiveRegion доступно только для приложений Android.

Он используется для уведомления пользователя об изменениях компонента.

Возможные значения: 'none', 'polite' и 'assertive'.

'none' означает, что изменения не объявлять.

'polite' означает объявление об изменениях в представлении.

'assertive' означает прерывание текущей речи, чтобы немедленно объявить об изменениях в этом представлении.

Например, мы можем написать:

import React from 'react';
import { StyleSheet, Text, TouchableWithoutFeedback, View } from 'react-native';
export default function App() {
  const [count, setCount] = React.useState(0);
  return (
    <View accessible={true} style={styles.container}>
      <TouchableWithoutFeedback onPress={() => setCount(c => c + 1)}>
        <View>
          <Text>Click me</Text>
        </View>
      </TouchableWithoutFeedback>
      <Text accessibilityLiveRegion="polite">
        Clicked {count} times
      </Text>
    </View>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

для добавления компонента Text с опорой accessibilityLiveRegion к компоненту Text.

Теперь будет объявлено об изменениях в тексте этого компонента.

доступность

Опора accessbilityRole позволяет нам сообщать вспомогательным технологиям, для чего используется компонент.

Список возможных значений находится по адресу https://reactnative.dev/docs/accessibility#accessibilityrole.

accessibilityState

Свойство accessibilityState описывает текущее состояние компонента пользователю вспомогательных технологий.

Это объект, и он может иметь свойства disabled, selected, checked, busy и expanded.

disabled указывает, отключена ли она.

selected указывает, выбрано ли оно.

checked указывает, проверено ли оно.

busy указывает, занят ли он.

expanded указывает, развернут ли он.

Например, мы можем написать:

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default function App() {
  return (
    <View accessible={true} style={styles.container}>
      <Text accessibilityState={{
        disabled: false,
        selected: false,
        checked: false,
        busy: false,
        expanded: false,
      }}>
        hello world
      </Text>
    </View>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

для установки значений.

Заключение

Мы можем установить метки доступности для компонентов с помощью React Native, чтобы сделать наше приложение доступным.