微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 NativeDriver 在 onScroll 中设置多个 Animated.Values?

如何解决如何使用 NativeDriver 在 onScroll 中设置多个 Animated.Values?

我有一个 Animated.FlatList,它必须在滚动事件上设置两个 Animated.Values,同时使用 y 偏移值和使用 NativeDriver。也许这可以通过向事件添加额外的侦听器来完成。但是,据我了解,该侦听器不会与本机驱动程序一起运行,这是必需的。

基本上我想做这样的事情:

<Animated.FlatList
  ...
  onScroll={Animated.event(
    [
      {
        nativeEvent: {
          contentOffset: {
            y: animatedVal1,},{ 
        nativeEvent: {
          contentOffset: {
            y: animatedVal2,],{useNativeDriver: true},)}
  ...
/>

但是,当开始滚动时,它会抛出错误

Invariant Violation: Event has less arguments than mapping,js engine: hermes

我正在查看 Animated.forkEvent(),但有关该 API 的可用信息非常有限,我无法弄清楚。

解决方法

你可以试试这样的:

const animatedVal1 = new Animated.Value(0);
const animatedVal2 = new Animated.Value(0);
const scrollY = Animated.add(animatedVal1,animatedVal2);

<Animated.FlatList
  ...
  onScroll={Animated.event(
    [
      {
        nativeEvent: {
          contentOffset: {
            y: scrollY,},}
    ],{useNativeDriver: true},)}
  ...
/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。