Как автоматически обновлять FlatList при вставке данных в React Native?

При добавлении данных с сервера GraphQL мой FlatList не обновляется. Я пробовал обновлять и onRefresh, но не совсем уверен, как я этого добьюсь, надеюсь, кто-то может мне помочь.

<View>
    <Query query={GET_ALL_RECIPES}>
      {({loading, data, error}) => (
        loading
          ? <ActivityIndicator />
          : (
            <FlatList
              keyExtractor={(item) => item.id}
              extraData={this.state}
              data = {data ? data.allRecipes : []}
              renderItem = {({item})=>(
                <TouchableOpacity onPress={()=>{
                  this.props.navigation.navigate('Details', {details: item})
                }}>
                  <Text style={styles.textConst}>Title: {item.title} </Text>
                  <Text style={styles.textConst}>Description: {item.description} </Text>
                  <Seperator />
                </TouchableOpacity>
              )}
              />
            )
          )}
    </Query>
<View>

person Just Ahead    schedule 06.07.2018    source источник
comment
Для обновления пользовательского интерфейса на основе данных следует использовать переменную состояния и метод setState.   -  person Kranthi    schedule 06.07.2018
comment
На самом деле, есть один способ для FlatList, кто-то помог мне с методом onRefresh   -  person Just Ahead    schedule 06.07.2018


Ответы (1)


Вам необходимо изменить:

extraData={data}

Передав extraData = {this.state} в FlatList, мы гарантируем, что сам FlatList будет повторно визуализироваться при изменении state.selected. Без установки этого свойства FlatList не узнает, что ему нужно повторно визуализировать какие-либо элементы, потому что это также PureComponent, и сравнение свойств не покажет никаких изменений. здесь

person mrkacan    schedule 06.07.2018
comment
Я написал, но это не помогло - person Just Ahead; 06.07.2018
comment
Я решил свою проблему методом onRefresh. Спасибо за уделенное время - person Just Ahead; 06.07.2018