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

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
Tailwind CSS Blog
罗磊的独立博客
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
博客园 - 叶小钗
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
博客园 - 【当耐特】
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
量子位
宝玉的分享
宝玉的分享
V
Visual Studio Blog
博客园_首页
IT之家
IT之家
V
V2EX
腾讯CDC
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
有赞技术团队
有赞技术团队
J
Java Code Geeks
Recorded Future
Recorded Future
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
H
Help Net Security

webfem

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,转载请注明出处