是的,但它并不完美。你可以让它像你期望的那样工作。此解决方案的唯一问题是,当向上滚动由 Momentum 控制时,快照不会触发。
考虑到当前的限制,诀窍是改用 snapToInterval,然后动态更新 snapToInterval 属性 onScroll。
在构造函数中创建一个状态。
this.state= {
staticScrollY: 0,
}
为 onScroll 添加一个监听器来跟踪滚动位置。
listener: (event) => this.handleOnScroll(event.nativeEvent.contentOffset.y)
在 Constructor 和 Render 之间创建一个函数
handleOnScroll = event => {
this.setState({
staticScrollY: event,
})
}
在 snapToInterval 属性中使用三元运算符,其中包含您想要的第一个快照的数量以及快照应该大于该数量一次。
snapToInterval={this.state.staticScrollY < 99 ? 98 : 0}
QED..
PS。在 Momentum Scroll 上添加了此解决方案的限制。如果有人可以解决这个问题,请发布。