हमारे पास एक कार्डलिस्ट प्रतिक्रिया मूल घटक है जो खोज घटक का एक बच्चा है।

export default function CardList(props) {

  keyExtractor = (item, index) => index.toString()

  renderItem = ({ item }) => (
      <ListItem
        title={item.name}
        subtitle={item.subtitle}
        leftAvatar={{
          source: item.avatar_url && { uri: item.avatar_url },
          title: item.name[0]
        }}
        bottomDivider
        chevron
      />
  )

  return (
    <FlatList
      keyExtractor={keyExtractor}
      data={props.images}
      renderItem={renderItem}
    />
  );
}

खोज बैकएंड से डेटा एसिंक्स प्राप्त करती है जिसमें कुछ सेकंड लगते हैं और उपयोग प्रभाव के साथ किया जाता है, किसी कारण से उपयोग में सेटकी कार्डलिस्ट घटक को फिर से प्रस्तुत नहीं करता है। जब मैं एक्सपो पर हॉट-रीलोड के साथ कृत्रिम रूप से रीफ्रेश करता हूं तो कार्डलिस्ट ठीक प्रस्तुत करता है। सेटकेज़ (यूज़स्टेट) घटक को प्रस्तुत क्यों नहीं करता है?

किसी भी मदद के लिए धन्यवाद!

  const [keys, setKeys] = useState([]);
  useEffect(() => {
    const fetchData = async () => {
      const imgkeys = await << 5 second long backend call >>;
      setKeys(imgkeys);
    }
    fetchData();
  }, []);
  return (
    <View>
      <View style={{
        padding: 5,
         }}>  
        { (keys) && (keys.length>0) && <CardList images={keys}/> }
      </View>
    </View>
  );
0
Siva Vg 26 फरवरी 2020, 02:01

1 उत्तर

सबसे बढ़िया उत्तर

सेटस्टेट प्रदर्शन कारणों से एसिंक्रोनस है और इसे केवल इसलिए सिंक्रोनस होने के लिए मजबूर नहीं किया जाना चाहिए क्योंकि राज्य अपडेट सही तरीके से नहीं किए गए थे।

आप बस इस तरह useState को परिभाषित कर सकते हैं:

const [, forceUpdate] = React.useState(0);
forceUpdate(n => !n)
-1
Harmenx 26 फरवरी 2020, 02:08
यह प्रश्न का उत्तर कैसे देता है?
 – 
AntonOfTheWoods
14 सितंबर 2021, 10:33