Почему индикатор обновления не отображается на iOS при обновлении списка для извлечения его элементов? - PullRequest
0 голосов
/ 14 января 2019

У меня есть плоский список записей в моем приложении. При первом запуске приложения список будет пустым, и пользователь должен войти в систему, чтобы получить / синхронизировать свои записи. После входа пользователя я вызываю функцию child.refresh, которая запускает обновление плоского списка. Записи синхронизируются правильно и заносятся в список. На Android я вижу индикатор обновления, пока список загружает записи. Но на iOS это не показывается, и похоже, что приложение застряло, пока записи наконец не будут добавлены в список. В чем может быть проблема? Индикатор обновления не будет отображаться, когда в списке ничего нет?

   <FlatList
            scrollEnabled={this.props.scroll}
            inverted
            style={styles.full}
            data={this.props.days}
            extraData={this.props.entries}
            refreshControl={
            <RefreshControl
                  refreshing={this.state.refreshing}
                  onRefresh={this.handleRefresh}
             />}
             renderItem={info => (
                    <ListItem
                        day={info.item.day}
                        key={info.item.key}
                        entries={this.props.entries}
                        onPickEntry={this.onPick}
                        scroll={this.SwipeScrollEvent.bind(this)}
                    />
              )}
  />

edit: вот как я сделал handleRefresh:

  this.setState({ refreshing: true }, function() { 
      //...
      //when all done
      this.setState({refreshing: false })
    })

Ответы [ 2 ]

0 голосов
/ 15 января 2019

вы должны установить обновление при получении данных и передать их напрямую в FlatList props

Установите это значение в ожидании новых данных из обновления.

  <FlatList
    data={this.props.items}
    numColumns={2}
    keyExtractor={this._keyExtractor}
    renderItem={this._renderItem}
    onRefresh={this._onRefresh}
    refreshing={this.state.executingRequest}
  />
0 голосов
/ 14 января 2019

в соответствии с документацией плоского списка на официальном официальном сайте здесь вы должны установить refreshing {{true} и не refreshControl, а

onRefresh={() => { // function to call here}

Пожалуйста, попробуйте это и дайте мне знать

PS: refreshControl применяется только к listView или scrollview - отметьте здесь

Этот компонент используется внутри ScrollView или ListView, чтобы добавить тягу к обновить функциональность. Когда ScrollView в ScrollY: 0, считывание down вызывает событие onRefresh.

...