本机反应:为什么useCallback导致循环错误?

时间:2020-07-15 17:41:12

标签: javascript reactjs react-native react-hooks react-native-flatlist

我尝试在平面列表的渲染功能(尤其是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内部记住一个函数是否有任何更改,以防止不必要的重新渲染?

0 个答案:

没有答案