#react-native #flatlist
Вопрос:
У меня есть плоский список, и он содержит список сообщений и видео, теперь мне нужно подсчитать просмотры для каждого элемента, я попытался использовать viewabilityConfig и onViewableItemsChanged в плоском списке, и это отлично работает, если я хочу считать видимый элемент только как представление.
проблема в том, что у меня была функция, написанная внутри onViewableItemsChanged для приостановки видео сразу после того, как пользователь прокручивает видео. теперь у меня есть две функции с разным временем выполнения. как я могу справиться с этими двумя функциями ?
onViewableItemsChanged = (info) =gt; { if (this.props.enableView) { console.log('item viewed after minimumViewavlitytime 5s: ', info) //done after 5s of view time } this.pauseVideoFunction(); //done exactly after scrolling }; viewabilityConfig = { minimumViewTime:5000, waitForInteraction: false, viewAreaCoveragePercentThreshold: 95, }
Ответ №1:
я справился с этим таким образом:
- удалено минимальное время просмотра из файла конфигурации
- добавил это в конструктор, так как он является компонентом класса
this.debouncedViewCount = debounce(this.countView, 5000);*
- называется debouncedViewCount внутри
onViewableItemsChanged
теперь у меня есть счетчик осужденных просмотров, который запускается через 5 секунд, если прокрутка не перемещается, и может приостановить видео сразу после прокрутки
class ComponentA extends React.Component { constructor(props) { super(props); this.debouncedViewCount = debounce(this.countView, 5000); //aaaaaaaaaaa } countView = (info) =gt; { debounce(console.log('Debouced 5s', info), 5000, false) } onVideoExitScreen = (info) =gt; { //todo working on view aaaaaaaaaaaaaaaaaaaa if (this.props.enableView) { this.debouncedViewCount(info); } pauseVideoFunction(); }; }
//inside Flatlist onViewableItemsChanged={this.onViewableItemsChanged}