【问题标题】:How to check visibility of item in FlatList at different visibility percentages?如何以不同的可见性百分比检查 FlatList 中项目的可见性?
【发布时间】:2023-04-03 15:02:01
【问题描述】:

当 React Native FlatList 中的给定项目在 2 种不同场景中可见时,我正尝试对其执行操作:

  1. 当项目 10% 可见时(执行淡入淡出/缩放动画)
  2. 当项目 100% 可见时(在屏幕上开始播放视频/音频)

从 RN 文档中,它指出不能按需更改 viewabilityConfig

如何做到这一点? 谢谢。

【问题讨论】:

    标签: javascript user-interface react-native


    【解决方案1】:

    我刚刚注意到FlatList 采用了一个名为viewabilityConfigCallbackPairs 的道具,其格式在https://facebook.github.io/react-native/docs/virtualizedlist.html#viewabilityconfigcallbackpairs 中没有完整记录

    基本上,它的作用是获取一个对象数组,其中包含viewabilityConfigonViewableItemsChanged 的键/值对。这将允许您为每个不同的可见性配置定义任何处理程序。

    例如:

    <FlatList
        data={items}
        renderItem={this.renderItem}
        keyExtractor={(item) => item.id }
        refreshing={false}
        onRefresh={this.onRefresh}
        viewabilityConfigCallbackPairs={this.viewabilityConfigCallbackPairs}
    />

    this.viewabilityConfigCallbackPairs 等于:

    this.viewabilityConfigCallbackPairs = [{
        viewabilityConfig: {
          minimumViewTime: 500,
          itemVisiblePercentThreshold: 100
        },
        onViewableItemsChanged: this.handleItemsInViewPort
      },
      {
        viewabilityConfig: {
          minimumViewTime: 150,
          itemVisiblePercentThreshold: 10
        },
        onViewableItemsChanged: this.handleItemsPartiallyVisible
      }
    ];

    【讨论】:

    • 我写了一篇关于FlatList的可见度事件的文章。 suelan.github.io/2020/01/21/onViewableItemsChanged。了解这些 API 背后发生的事情会很有帮助。
    • 与类组件一起工作,但我不能让它在功能组件中工作,谁能提供一些FC代码?编辑:没关系让它使用 const pairs = useRef(viewabilityConfigCallbackPairs);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多