React-Native: есть ли способ отслеживать, прочитал ли пользователь весь контент, доступный на текущей странице?

#react-native #scrollview

#реагировать-родной #scrollview #react-native

Вопрос:

У меня есть эта база данных, в которой я хочу отслеживать, сколько доступного контента прочитал пользователь. В приложении есть один ScrollView, внутри которого присутствует несколько подразделов, которые также можно прокручивать. Как я могу отслеживать процент от общего объема контента, прочитанного пользователем в целом?

Ответ №1:

Вы можете использовать этот компонент, чтобы получить процент прокрутки

 import React from 'react';
import {ScrollView, Text, View} from 'react-native';

const scrollPercentage = ({layoutMeasurement, contentOffset, contentSize}) => {
  return ((layoutMeasurement.height   contentOffset.y)/contentSize.height) * 100;
};

function PercentageScrollView({onReadPercentageChanged, children}) {

  return <ScrollView
    onScroll={({nativeEvent}) => {
      onReadPercentageChanged(scrollPercentage(nativeEvent));
    }}
    scrollEventThrottle={400}
  >
    {children}
  </ScrollView>
}

export default PercentageScrollView;
  

Используйте в своем компоненте вот так :

 <PercentageScrollView onReadPercentageChanged={(readPercentage)=>{
  setPercentage(readPercentage);
}}>
  <View>
    ...
  </View>
</PercentageScrollView>
  

Комментарии:

1. Я хочу перефразировать вопрос, я хочу постоянно отслеживать, сколько общего контента прочитал пользователь. Итак, в основном сначала прочитанный контент равен 0%, и по мере того, как пользователь продолжает прокручивать, он соответственно увеличивается.

2. Это было то, что вы искали?

3. Основное решение, похоже, работает, если возникнет какая-либо другая проблема, я прокомментирую запрос.