Shoutem ListView - onLoadMore не останавливает загрузку

Согласно документации, обратный вызов ListView onLoadMore() должен срабатывать, когда «ListView прокручивается до конца первой страницы».

У меня есть следующая реализация, и проблема в том, что ListView просто не перестает вызывать обратный вызов onLoadMore даже без прокрутки страницы. Это неприемлемое решение, потому что оно просто загружает столько данных, когда представление какое-то время открыто, что оно перестает отвечать на запросы.

Код выглядит следующим образом:

<ListView
    data={this.state.posts}
    renderRow={this.renderRow}
    loading={this.state.loading}
    onLoadMore={this.onFeedLoadMore}
/>

...

onFeedLoadMore() {
      console.log("onFeedLoadMore called");

      this.setState({loading: true});

      if (_.has(this.state.paging, 'next')) {
        fetch(this.state.paging.next, {
          method: 'GET',
          headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
          }
        }).then((response) => response.json()).then((responseJson) => {
          this.setState({loading: false});
          console.log(responseJson);

          this.setState({paging: responseJson.paging});
          this.setState({posts: this.state.posts.concat(responseJson.data)})

        }).catch((error) => {
          this.setState({loading: false});
          console.log("error fetching paged fb newsfeed: ", error);
        })
      }
}

person Sebastian Auberger    schedule 22.04.2017    source источник


Ответы (1)


Если у вас есть ListView внутри ScrollView, переместите его. Это известная проблема с обратным вызовом RN onEndReached в этом сценарии.

person airmiha    schedule 22.04.2017
comment
Это решило мою проблему. У меня был ListView внутри ScrollView - person Sebastian Auberger; 22.04.2017