如何检测视图在本机的视口或窗口中是否可见?

Rom*_*mar 8 react-native

我想要一个类似的功能,就像react 可见性传感器一样,但是在 react-native 中。我有一个包含多个项目的平面列表(每个项目都有不同的高度)。我想检测特定项目(比如第 5 个项目)是否进入视口以及何时退出

Dan*_*Dan 13

您可以使用onViewableItemsChanged来检查viewableItems屏幕上有哪些。

这是一个虚拟类示例:

class Demo extends Component {
  constructor() {
    super();
    this.viewabilityConfig = {
      viewAreaCoveragePercentThreshold: 95
    }
  }
  onViewableItemsChanged = ({ viewableItems }) => {
    // viewableItems will show you what items are in view
  }
  render() {
    <FlatList
      ...
      onViewableItemsChanged={this.onViewableItemsChanged}
      viewabilityConfig={this.viewabilityConfig}
    />
  }
} 
Run Code Online (Sandbox Code Playgroud)

您需要相应地进行修改viewAreaCoveragePercentThreshold

  • 如果您在 React Native 中使用钩子,则需要将该函数和 viewabilityConfig 包装到 Ref 中,这样就不会抛出“不支持动态更改 onViewableItemsChanged”错误。请参阅:/sf/ask/3363198751/ (3认同)