React Native ListView onEndReached продолжает работать

По какой-то причине, которую я не понимаю, мой ListView продолжает работать, даже если он находится наверху прокрутки, мне нужно обернуть его внутри ScrollView, потому что я хочу, чтобы моя панель инструментов скрывалась, когда пользователь также прокручивал вниз в ListView.

Это содержимое метода render():

<ScrollView>
    <ActivityContainer>
      <ListView
        onEndReachedThreshold={100}
        pageSize={10}
        initialListSize={20}
        onEndReached={() => {
                        console.log("fired"); // keeps firing
                      }}
        enableEmptySections={true}/>
    </ActivityContainer>
</ScrollView>

Также попытался обернуть всю вещь в вид, как это:

<ScrollView>
   <View>
    <ActivityContainer>
      <ListView
        onEndReachedThreshold={100}
        pageSize={10}
        initialListSize={20}
        onEndReached={() => {
                        console.log("fired"); // keeps firing
                      }}
        enableEmptySections={true}/>
    </ActivityContainer>
   </View>
</ScrollView>

Изменить: мне не нужен renderHeader, потому что я пытаюсь прокрутить все в верхней части ListView, он имеет много компонентов и представлений и дочерних представлений, а не заголовок представления списка.

2 ответа

Посмотрите, работает ли это:

<ListView
  onEndReachedThreshold={100}
  pageSize={10}
  renderHeader={() => <ToolbarAndroid />}
  initialListSize={20}
  onEndReached={() => {
    console.log("fired"); // keeps firing
  }}
  enableEmptySections={true}/>

Используйте хеш для подкачки в ListView, когда> 1 столбец

В настоящее время я использую React Native v44, но не пробовал последнюю версию.

В вашем конструкторе попробуйте это...

constructor(props) {
  this.pagesLoaded = {}
  this.currentPage = 1
  // etc
}

Тогда в вашем методе извлечения данных попробуйте это...

getData() {
  if (this.pagesLoaded[this.state.currentPage]) return
  this.pagesLoaded[this.state.currentPage] = true
  // fetch data
}

Таким образом, когда onEndReached перегружен, это не имеет значения. Это похоже на ошибку в ListView, так как я установил размеры вокруг него и не имел его в пределах ScrollView так что это происходило исключительно внутри компонента, даже если настройка getItemLayout двигательный

Другие вопросы по тегам