3

何か新しいものがスクロール ビューにレンダリングされるたびに、スクロール ビューが置かれたままになり、上下にぶつからないようにしようとしています。現在、新しいコンポーネントがレンダリングされると、スクロールビューが 0 にリセットされたように見えます。

この動作を停止し、位置を保持する方法はありますか?

今私が使用しているスクロールビューのために:

handleScrollt(event){
    this.scroll = event.nativeEvent.contentOffset.y
  }

handleSizet(width, height){
  if (this.scroll) {
    const position = this.scroll + height - this.height
    this.refs.sv.scrollTo({x: 0, y: position, animated: false})
  }
  this.height = height
}



  <ScrollView
      ref="sv"

       scrollEventThrottle={16}

       onScroll={this.handleScrollt.bind(this)}
  onContentSizeChange={this.handleSizet.bind(this)}

これに関する問題は、スクロールビューが短時間レンダリングされてから、正しいオフセットにスクロールすることです。そのため、画面の上部に短いスプラッシュがあるように見えます

4

2 に答える 2

-1

試してみてくださいmaintainVisibleContentPosition

例:

<ScrollView
    {...props}
    maintainVisibleContentPosition={{
      minIndexForVisible: 0,
    }}
/>

ドキュメントから:

維持VisibleContentPosition

設定すると、スクロール ビューはスクロール位置を調整して、現在表示されていて minIndexForVisible 以降の最初の子の位置が変更されないようにします。これは、新しいメッセージが入ってくるとスクロール位置がジャンプする可能性があるチャット スレッドなど、両方向にコンテンツをロードするリストに役立ちます。0 の値が一般的ですが、1 などの他の値を使用して、位置を維持する必要のないスピナーやその他のコンテンツの読み込みをスキップできます。

于 2019-10-13T18:58:30.703 に答える