Выбор ответа Junior Компоненты и стили обновлено

React Native: Pressable

Вопрос

Почему в новых экранах обработку нажатий пишут на Pressable, а не на TouchableOpacity?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Он гибче: состояние pressed для стилей, долгое нажатие, hitSlop, и он рекомендован. Pressable это универсальный примитив: стили и содержимое можно задать функцией от состояния (({ pressed }) = ...), есть долгое нажатие, расширение области нажатия, ховер для устройств с мышью.

Варианты ответа

  1. Он гибче: состояние pressed для стилей, долгое нажатие, hitSlop, и он рекомендованправильный ответ
  2. TouchableOpacity удалён из React Native, и старый код перестал собираться
  3. Pressable работает только на iOS, а на Android по-прежнему нужны компоненты Touchable*
  4. TouchableOpacity не поддерживает onPress, только onPressIn и onPressOut

Разбор

Pressable это универсальный примитив: стили и содержимое можно задать функцией от состояния (({ pressed }) => ...), есть долгое нажатие, расширение области нажатия, ховер для устройств с мышью. Touchable* продолжают работать, но документация советует Pressable. Он кроссплатформенный, а onPress у TouchableOpacity есть.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.