#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. Основное решение, похоже, работает, если возникнет какая-либо другая проблема, я прокомментирую запрос.