اذهب إلى المحتوى

السؤال

نشر

كيف اعالج هده المشكلة  ERROR  Invariant Violation: Changing onViewableItemsChanged on the fly is not supported

هذا هو الكود

    <Animated2.FlatList
            horizontal
            data={ads}
            keyExtractor={item => item.id.toString()}
            // onViewableItemsChanged={({viewableItems, changed}) => {
            //   console.log(viewableItems[0].index);
            //   setSelectedIndex(viewableItems[0].index);
            // }}

            onViewableItemsChanged={onViewableItemsChanged}
            viewabilityConfig={viewabilityConfig}

            style={{backgroundColor: 'red'}}
            contentContainerStyle={{justifyContent: 'center'}}
            onScrollEndDrag={() => goToSelectedLocation(selectedIndex)}
            renderItem={({item, index}) => {
              setSelectedIndex(index);
              console.log(index);

              return (
                <MapCard
                  onPress={() => goToSelectedLocation(index)}
                  style={{margin: 4}}
                  title={item.title}
                  image={item.image}
                  price={item.price}
                />
              );
            }}
          />

 

Recommended Posts

  • 1
نشر

يبدو ان التابع onViewableItemsChanged الذي تمرره للمكون غير ثابت ويعاد تعريفه في كل مرة يتم استدعاء المكون

const onViewableItemsChanged = function() {...} // يعاد تعريف التابع في كل مرة

يجب تمرير تابع بمؤشر ثابت، يمكنك استخدام useCallback لهذا الغرض حيث يتم تعريف التابع فقط اول مرة يستدعى المكون

// تابع يعرف بالمرة الأولى فقط
const onViewableItemsChanged = useCallback((viewableItems) => {
	// يستدعى التابع هنا عند تغير العناصر المرئية
},[]);

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...