React Native helps the users to use the same programming language and model you use to create web applications and native mobile app. And similarily GraphQL and Apollo Client are designed to make data loading management simple and consistent regardless of your backend data.
One of the most common UI feature of mobile application is scrollable list. It is important to get right user experience because we don’t have much screen space in mobile and many apps need to display long list of data.
So the React native FlatList has all the Feature to build a great Native List view with all the bells and whistles which users expects. Infinite scroll pagination, pull to refresh and smooth rendering performances.
To Start with the setup we need a GraphQL API from which we can load data.
This code looks simple but is actually doing a lot under the hood :
- Checking the cache of existence data to avoid extra data overloading.
- Keeping track of loading status for query.
- Reading data from cache and delivering it to components
There is a Pull to refresh feature that enables you too pull down on the top of a list view to get fresh data.
So, all together its only two lines of codes to connect Apollo and React Native FlatList to add pull to refresh :
And with this code we get fully native refresh behaviour in our app. The callback from FlatList wires up nicely to fetchMore method from Apollo Client Data Object . It reuses the same query but passes a new offset variable to fetch a page of data and then concatinate the items to the end.
This shows in the UI seamlessly.