实现拉取刷新 FlatList

2022-01-23 00:00:00 javascript react-native expo

请帮助我在我的应用程序上实现拉动刷新,我对本机反应有点新,谢谢.我不知道如何处理onRefresh和刷新.

please help me out to implement pull to refresh on my app, I'm kinda new to react native, thanks. I don't know how to handle onRefresh and refreshing.

class HomeScreen extends Component {
  state = { refreshing: false }

  _renderItem = ({ item }) => <ImageGrid item={item} />

  _handleRefresh = () => {

  };

  render() {
    const { data } = this.props;
    if (data.loading) {
      return (
        <Root>
          <Loading size="large" />
        </Root>
      )
    }
 return (
   <Root>
     <HomeHeader />
     <FlatList
       contentContainerStyle={{ alignSelf: 'stretch' }}
       data={data.getPosts}
       keyExtractor={item => item._id}
       renderItem={this._renderItem}
       numColumns={3}
       refreshing={this.state.refreshing}
       onRefresh={this._handleRefresh}
     />
   </Root>
  );
 }
}

export default graphql(GET_POSTS_QUERY)(HomeScreen);

推荐答案

设置变量

this.state = { 
    isFetching: false,
}

创建刷新函数

onRefresh() {
    this.setState({isFetching: true,},() => {this.getApiData();});
}

最后设置onRefresh并在FlatList中刷新.

And in last set onRefresh and refreshing in FlatList.

<FlatList
    data={ this.state.FlatListItems }
    onRefresh={() => this.onRefresh()}
    refreshing={this.state.isFetching}
/>

在getApiData函数中获取数据后确保设置false isFetching.

After fetching Data in function getApiData Make sure to set false isFetching.

this.setState({ isFetching: false })

相关文章