Home > other >  Use .map not flatlist with activityIndicator in react native
Use .map not flatlist with activityIndicator in react native

Time:07-11

I am getting a list of data using map not flatlist, I want to use .map not flatlist, when I apply ActivityIndicator to it while fetching the data, it did not work see below

Below is my code

<View>
{dataList.map((dataList, index) => 
 <Text key={index} >{dataList.category_name}</Text>
 <Text key={index} >{dataList.category_number}</Text>
)}
</View>

When I tried it with ActivityIndicator see below

{ dataList ?
<View>
{dataList.map((dataList, index) => 
    <Text key={index} >{dataList.category_name}</Text>
    <Text key={index} >{dataList.category_number}</Text>
)}
</View>

: 

<ActivityIndicator />

}

It the not work, I will need your help with this. Thanks in advance

CodePudding user response:

Try using a boolean for your conditional render such as a loading state which you can easily toggle on and off at the beginning of the fetch and at the end respectively. You can also state the logic of your map outside of your component so it looks way cleaner and easy to read like this example:

import React from 'react';
import { Text, View, ActivityIndicator } from 'react-native';

const dataList = [
  { category_name: 'pop', category_number: 1 },
  { category_name: 'dance', category_number: 2 },
  { category_name: 'hiphop', category_number: 3 },
];

const renderDataList = () => {
  return dataList.map((dataList, index) => (
    <View>
      <Text>{dataList.category_name}</Text>
      <Text>{dataList.category_number}</Text>
    </View>
  ));
};

const App = () => {
  const [isLoading, setIsloading] = React.useState(false);
  return <View>{isLoading ? <ActivityIndicator /> : renderDataList()}</View>;
};

export default App;

Your output would be for false:

enter image description here

Your output for true would be:

enter image description here

  • Related