'SectionList return duplicated items in react native

i am trying to get rows from database like this: ...

const [recommendedItems,setRecommendedItems] = useState(null);
const [recommendedStores,setRecommendedStores] = useState(null);
const [allStores,setAllStores] = useState(null);

...

useEffect(()=>{
getOrderNowItems(setRecommendedItems,setItemsSupliers,"WHERE active = 1 AND recommended = 1 AND i_quantity > 0 ORDER BY id desc");
  getOrderNowStores(setRecommendedStores,"WHERE active = 1 AND recommended = 1 ORDER BY id desc");
  getOrderNowStores(setAllStores,"WHERE active = 1 AND recommended != 1 ORDER BY id desc");
},[]);

...

this is sections array:

const sections = [
    {title:t(trans.recommendedItems),data:recommendedItems && recommendedItems!=null?recommendedItems:[],color:"black",type:"items"},
    {title:t(trans.recommendedstores),data:(recommendedStores && recommendedStores!=null)?recommendedStores:[],color:"black",type:"stores"},
    {title:t(trans.stores),data:(allStores && allStores!=null)?allStores:[],color:"black",type:"stores"}
];

this is section component:

<SectionList 
    ListHeaderComponent={sectionListHeader}
    keyExtractor={keyExtractor2}
    sections={sections} 
    renderSectionHeader={renderSectionHeader2}
    renderItem={renderItems2} 
    extraData={[allStores,recommendedStores,recommendedItems]}
/>

and this is sectionlist props:

const keyExtractor2 = (index,item) => item.id;
  const renderSectionHeader2=({section})=> section.data.length > 0 && 
    <View>
        <Text>{section.title}</Text>
    </View>;
  
  const renderItems2 = ({index,item,section})=>{....}

I check the data returned from SQL data by 'Axios' is current, but the section render and duplicated.

any help, please?



Solution 1:[1]

ok i solved it by:

changing

const keyExtractor2 = (index,item) => item.id;

to

const keyExtractor2 = (index,item) => item+index;

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mikha Matta