【问题标题】:How to automatically refresh FlatList when data inserted in React Native?在 React Native 中插入数据时如何自动刷新 FlatList?
【发布时间】:2018-12-14 22:42:20
【问题描述】:

从 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>

【问题讨论】:

  • 要根据数据更新 UI,您应该使用 state 变量和 setState 方法
  • 其实FlatList有一种方法,有人帮我用onRefresh方法

标签: react-native graphql react-native-flatlist


【解决方案1】:

你必须改变:

extraData={data}

通过将 extraData={this.state} 传递给 FlatList,我们确保 FlatList 本身会在 state.selected 更改时重新渲染。如果不设置这个 prop,FlatList 将不知道它需要重新渲染任何项目,因为它也是一个 PureComponent,并且 prop 比较不会显示任何更改。 FlatList information here

【讨论】:

  • 我写了,但没有帮助
  • 我已经用 onRefresh 方法解决了我的问题。感谢您的宝贵时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 2021-09-04
  • 1970-01-01
相关资源
最近更新 更多