我尝试在平面列表的渲染功能(尤其是onPress
)内使用项目的react-native-snap-carousel
-prop。
<Carousel
data={props.pictures??[]}
renderItem={(item) => (
<Picture
key={item.index}
width={context.width}
picture={item.item}
onPress={handlePictureOnPress}
rounded={false}
height={theme.misc.pictureDefaultHeight}
{...props.pictureProps}
/>
)}
sliderWidth={context.width}
itemWidth={context.width}
activeSlideAlignment={'start'}
layout={'default'}
containerCustomStyle={{ height: theme.misc.pictureDefaultHeight }}
onSnapToItem={(i) => setIndex(i)}
{...props.carouselProps}
/>
状态更改时,由于新生成的onPress
函数,所有项目都将重新加载。尝试像这样声明handlePictureOnPress
时:
const handlePictureOnPress = React.useCallback(() => doSomething(), []);
我收到错误消息“ 渲染的钩子比以前的渲染”更多。在loop / renderItem-function内部记住一个函数是否有任何更改,以防止不必要的重新渲染?