惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Recent Announcements
Recent Announcements
V
Visual Studio Blog
博客园 - 叶小钗
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
U
Unit 42
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
D
DataBreaches.Net
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence

webfem

Turn Videos into AI Video Prompts:把视频变成可复用创意库 写作平台字数怎么算?公众号、论文和网文的统计口径 字数、字符数和英文单词数有什么区别?一次说清统计口径 中文字数统计是否包括标点?不同场景的计算口径说明 react-virtualized AutoSizer 实现原理详解 - webfem JWT技术详解:从入门到精通 - webfem 如何在电脑上调试手机网页 - webfem react-virtualized 的用法详解 - webfem MongoDB 入门详解 - webfem 博客搭建-创建文章接口 - webfem 代码相似性检查机制 - webfem WebSocket 技术详解:实时通信的利器 - webfem 小米YU7购车记-新能源购置税计算器的诞生 - webfem 手动搭建个人博客 - webfem 博客搭建-项目工程搭建 - webfem Base64编码详解:原理、应用与实践 - webfem 字数统计算法深度解析:从Unicode到实际应用的硬核技术实现 - webfem 衬线体与无衬线体:字体设计的经典对决 - webfem 如何把 小程序 转换为 VUE - webfem 性能优化-核心指标-FP - webfem MD5算法原理及其实现 - webfem 性能优化-核心指标-SI 的介绍与优化 - webfem 如何设计一个后端管理平台 - webfem
react-virtualized 无限列表图片闪屏问题修复 - webfem
yimin,2316114920@qq.com · 2025-12-10 · via webfem

背景

最近在使用 react-vertualized 库,开发一个无限滚动列表过程中,遇到一个问题。列表虽然可以一致滚动,但是列表的图片会突然的闪烁一下,找了很多地方,都没有结论,这里记录一下自己的解决方案。

方案

无限滚动列表如下图所示

无限滚动图示例

我的需求是通过 react-virtualized 实现一个照片墙。

图片闪烁,我先分析核心原因应该是图片重新渲染了,我找了很多导致图片重新渲染的地方,都没发现是啥影响了,图片的重复渲染。

没办法,只能退而求其次,转变思路,既然不能找到源头的问题,那我就解决自身问题,将图片的渲染缓存起来,避免重复渲染。

const ImageCell = React.memo<ImageCellProps>({img, onClick}) => {
  ...
}, (prevProps, nextProps) => {
   // 深度比较:比较 img 对象的所有属性
    const prevImg = prevProps.img;
    const nextImg = nextProps.img;

    // 如果 id 不同,需要更新
    if (prevImg.id !== nextImg.id) {
      return false; // 需要更新
    }

    // 如果 id 相同,比较其他可能变化的属性
    const shouldUpdate =
      prevImg.url !== nextImg.url ||
      prevImg.timestamp !== nextImg.timestamp;

    return !shouldUpdate; // 返回 true 表示 props 相同,不需要更新
})

核心逻辑有两点:

  1. 使用 React.memo 缓存图片组件,避免图片重新渲染

  2. 使用对象深度比较的方法,而不是对象相等的比较

至此,我的图片闪烁问题就得到了解决。希望以上有所帮助。

原文地址:https://webfem.com/post/react-virtualized-yh,转载请注明出处