У меня есть ScrollView
в моем приложении React Native, и у меня есть несколько вещей, которые нужно сделать на основе текущей позиции прокрутки - некоторые из них - самим ScrollView
, а некоторые - анимацией других компонентов.In React Native - можно ли добавить слушателя в Анимированное значение, полученное через реквизиты?
В идеале я хотел бы передать Animated.Value
позиции прокрутки другим компонентам через их реквизиты и добавить их к значению и выполнить свою задачу. Но, как я понимаю, слушатель должен быть добавлен в componentWillMount
, где у меня пока нет доступа к реквизитам. Поэтому я вынужден выполнять всю работу по прослушиванию значения в верхнем компоненте, который содержит как ScrollView
, так и другие компоненты, которые зависят от него.
Мой идеальный код бы что-то вроде:
<MyTopComponent>
<ScrollView onScroll={Animated.event([{nativeEvent: {contentOffset: {y: this.state.scrollPositionY}}}])}
<OtherComponentA scrollPositionY={this.state.scrollPositionY} />
<OtherComponentB />
</MyTopComponent>
А потом внутри OtherComponentA
:
this.props.scrollPositionY.addListener(this._listener.bind(this));
Но я не могу сделать это в OtherComponentA.componentWillMount
, потому что реквизита не доступны все же. Поэтому я должен сделать это в MyTopComponent.componentWillMount
.
Я что-то упустил?
Есть ли другой способ добавить слушателя на Animated.Value
, полученный через опоры?
Не уверен, что я полностью понимаю это требование, но не мог ли вы передать ссылку на функцию (в анимированное значение) в качестве опоры и просто использовать результат этой функции непосредственно в рендеринге цели? –