'react native flatlist removeclippedsubviews not working
can anybody explain me why removeClippedSubviews not working on the function:
const renderItem: ListRenderItem<IArr> = ({ item }) => {
return (
<View style={{width}}>
<FlatList
keyExtractor={(i) => i.id}
data={Data}
renderItem={renderData}
removeClippedSubviews
initialNumToRender={10}
nestedScrollEnabled
scrollEnabled={true}
maxToRenderPerBatch={100}
windowSize={7}
/>
</View>
)
};
App.tsx
import React, { useRef } from 'react';
import { Dimensions, ListRenderItem, Pressable, Image, StyleSheet, Text, View, Animated as An, StyleProp } from 'react-native';
import { GestureHandlerRootView, FlatList, ScrollView } from 'react-native-gesture-handler';
import Animated, { StyleProps, useAnimatedScrollHandler, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
import { Data, RecyclerList } from './RecyclerlistView';
interface IArr {
id: string;
text: string;
}
const arr: IArr[] = [
{
id: '1',
text: 'DATA'
},
{
id: '2',
text: 'SERVER'
},
{
id: '3',
text: 'Auto'
},
{
id: '4',
text: 'CENTER'
}
];
const AnimatedFlatlist = Animated.createAnimatedComponent(FlatList);
const { width, height } = Dimensions.get('window');
const renderData = ({ item }) => {
console.log(item);
return (
<View style={{flex: 1}}>
<Text>{item.name}</Text>
<Image source={{uri: item.image}} style={{height: 200, width: 200,}} />
</View>
)
}
const renderItem: ListRenderItem<IArr> = ({ item }) => {
return (
<View style={{width}}>
<FlatList
keyExtractor={(i) => i.id}
data={Data}
renderItem={renderData}
removeClippedSubviews
initialNumToRender={10}
nestedScrollEnabled
scrollEnabled={true}
maxToRenderPerBatch={100}
windowSize={7}
/>
</View>
)
};
interface INav {
rNav: {
transform: {
translateX: number;
}[]
},
onPress: (i: number) => void;
}
const Header = ({ rNav, onPress }: INav) => {
return (
<View style={{flex: 1, backgroundColor: '#fff'}}>
<View style={[{flexDirection: 'row', alignItems: 'center', justifyContent: 'space-around', marginVertical: 20, backgroundColor: '#ccc', width}]}>
{
arr.map((el, i) => (
<Pressable onPress={() => onPress(i)} key={i}>
<Text>{el.text}</Text>
</Pressable>
))
}
</View>
<Animated.View style={[{backgroundColor: 'red', height: 8, width: width / 4}, rNav]} />
</View>
)
};
export default function App() {
const translateX = useSharedValue(0);
const gestureEvent = useAnimatedScrollHandler((e) => {
translateX.value = e.contentOffset.x
});
const sr = useRef(null);
const scrollRef = useRef<FlatList>(null);
const onPress = (i: number) => {
//translateX.value = i * width
scrollRef.current?.scrollToIndex({ animated: true, index: i });
};
const rNav = useAnimatedStyle(() => {
return {
transform: [{ translateX: translateX.value * 0.25 }]
}
});
return (
<GestureHandlerRootView style={s.container}>
<ScrollView stickyHeaderIndices={[1]} nestedScrollEnabled style={{flex: 1,}}>
<View style={{height: 300, backgroundColor: 'red'}}>
<Text>Hello</Text>
</View>
<Header onPress={(i) => onPress(i)} rNav={rNav} />
<AnimatedFlatlist
onScroll={gestureEvent}
ref={scrollRef}
onEndReached={() => console.log('S')}
keyExtractor={(item, i) => item.id}
data={arr}
style={{flex: 1}}
horizontal
pagingEnabled
scrollViewProps={{nestedScrollEnabled: true}}
renderItem={renderItem}
/>
</ScrollView>
</GestureHandlerRootView>
)
}
const s = StyleSheet.create({
container: {
flex: 1,
}
})
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
