首页 > 解决方案 > 为什么有条件渲染的 React 组件在刷新时会闪烁,而不是同一组件的内联版本?

问题描述

我难住了。为什么一个闪烁而另一个不闪烁?
这是一个强制屏幕刷新的人为示例。

有关和钩子,请参阅此 Expo Snack的完整来源。useIntervaluseForceUpdate

标签: javascriptreact-native

解决方案


这是因为您使用的是功能组件。所以每次您的状态发生变化时,您的所有功能都会再次初始化。所以每当状态改变时,你的 Image 组件都会重新初始化,(它会再次挂载)

 const MyImage = () => (
    <>
      {shouldRenderImage && <Image style={styles.image} source={imageSource} />}
    </>
  );

为了尽量减少每次重新渲染时的重新初始化,我们可以使用useCallbackreact 中的钩子。

import  React, {useCallback} from 'react';
const MyImage = useCallback(() => (
    <>
      {shouldRenderImage && <Image style={styles.image} source={imageSource} />}
    </>
  ),[shouldRenderImage]);

推荐阅读