useAnimatedScrollHandler¶
Эта страница была перенесена из старой версии документации.
В процессе переписывания документации некоторые страницы могут быть немного устаревшими.
Это удобный хук, возвращающий ссылку на обработчик события, который может быть использован с прокручиваемыми компонентами React Native.
Аргументы¶
scrollHandlerOrHandlersObject
[объект с рабочими элементами]¶
Объект, содержащий любой из следующих ключей: onScroll
, onBeginDrag
, onEndDrag
, onMomentumBegin
, onMomentumEnd
. Значения в объекте должны быть отдельными заготовками. Каждый из них будет срабатывать при наступлении соответствующего события на подключенном компоненте Scrollable
.
При вызове каждый из событийных ворклетов будет получать следующие параметры:
event
[object] - объект события, несущий информацию о прокрутке. Полезная нагрузка может отличаться в зависимости от типа события (onScroll
,onBeginDrag
и т. д.). Для ознакомления со структурой событий прокрутки обратитесь к React Native's ScrollView documentation.context
[object] - обычный JS-объект, который может быть использован для хранения некоторого состояния. Этот объект будет сохраняться между событиями прокрутки, и вы можете читать и записывать в него любые данные. При наличии нескольких обработчиков событий, представленных в виде объекта воркетов, объектcontext
будет общим для всех воркетов, что позволит им взаимодействовать друг с другом.
dependencies
[Array]¶
Необязательный массив значений, изменение которых приводит к тому, что данный хук будет получать обновленные значения при рендеринге оборачивающего компонента. Это важно, когда, например, воркет использует значения, зависящие от состояния компонента.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Здесь dependencies
могут быть:
undefined
(аргумент пропущен) - заготовка будет перестроена при изменении тела любого из callback'ов или значений из их закрытия (переменных из внешней области видимости, используемых в заготовке),- пустой массив(
[]
) - заготовка будет перестроена только при изменении тела любого из callback'ов, - массив значений(
[val1, val2, ..., valN]
) - заготовка будет перестроена при изменении любого из тел обратных вызовов или любых значений из данного массива.
Возвращает¶
Хук возвращает объект обработчика, который может быть подключен к контейнеру с прокруткой. Обратите внимание, что для корректного срабатывания обработчика следует использовать контейнеры, обернутые в Animated
(например, Animated.ScrollView
, а не просто ScrollView
). Обработчик должен быть передан в параметре onScroll
независимо от того, настроен ли он на получение только событий прокрутки или также событий движения или перетаскивания.
Пример¶
В приведенном ниже примере мы определяем обработчик прокрутки, передавая один обработчик worklet. Обработчик запускается для каждого события прокрутки, переданного компоненту Animated.ScrollView
, к которому мы прикрепили обработчик.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
Если нас интересует получение событий перетаскивания или импульса, то вместо передачи одного объекта worklet можно передать объект worklet'ов. Ниже для удобства мы покажем только, как должен быть определен scrollHandler
в таком случае. Место, где мы прикрепляем обработчик к прокручиваемому компоненту, остается неизменным независимо от типов событий, которые мы хотим получать:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|