69

内にText長いテキストがありScrollView、ボタンを有効にできるように、ユーザーがテキストの最後までスクロールしたことを検出したいと考えています。

イベントからイベント オブジェクトをデバッグしてきましたが、onScroll使用できる値がないようです。

4

9 に答える 9

151

私はこのようにしました:

import React from 'react';
import {ScrollView, Text} from 'react-native';
    
const isCloseToBottom = ({layoutMeasurement, contentOffset, contentSize}) => {
  const paddingToBottom = 20;
  return layoutMeasurement.height + contentOffset.y >=
    contentSize.height - paddingToBottom;
};
    
const MyCoolScrollViewComponent = ({enableSomeButton}) => (
  <ScrollView
    onScroll={({nativeEvent}) => {
      if (isCloseToBottom(nativeEvent)) {
        enableSomeButton();
      }
    }}
    scrollEventThrottle={400}
  >
    <Text>Here is very long lorem ipsum or something...</Text>
  </ScrollView>
);
    
export default MyCoolScrollViewComponent;

paddingToBottom通常、ScrollView を最後のピクセルまで下にスクロールする必要がないため、追加したかったのです。ただし、それが必要な場合は、paddingToBottom をゼロに設定してください。

于 2016-12-09T10:34:29.077 に答える