react大列表更新时优化

问题

在一个大列表中(有上百条数据),切每个item里的节点也很多。假如你要对某个item做更新操作(比如:单选),如果不做处理,每次更新将会更新所有item。

解决

可结合虚拟列表,进行首次渲染加速。

typescript 复制代码
	  const [updateItem,setUpdateItem] = useState(null);
xml 复制代码
      <div>
        {list.map(item=>{
          return <Item item={item} value={updateItem} onChange={()=>setUpdateItem(item)} updateItem={updateItem} />
        })}
      </div>

使用memo缓存节点,避免每个节点都更新

typescript 复制代码
	const Item = () => {
	  return <div>...大量节点</div>;
	};
	
	const areItemPropsEqual = (prevProps, nextProps) => {
	  if (nextProps.updateItem?.id === nextProps.item?.id) return false;
	  return prevProps.updateItem?.id !== nextProps.item?.id;
	};
	
	export default memo(Item, areItemPropsEqual);
相关推荐
犹豫的果冻布丁19 小时前
从零给 DeepSeek Harness 写一个壁纸皮肤插件(已开源)
前端·后端
漏刻有时19 小时前
数据可视化Three.js 3D 地图实战:单文件原生实现省域区县拉伸建模
前端
会说话的番茄19 小时前
AI 满嘴跑火车怎么办?给它配个"小抄"
前端·aigc
计算机魔术师19 小时前
AI 权力集中辩论实录:从「token 工厂」到「唯一幸存者」
前端
eric-sjq19 小时前
WanlyFrontend 中文声明式前端语言完全指南:让 0.6B 模型写出漂亮网页
前端
Full Stack Developme19 小时前
跨站请求伪造 (CSRF) 是什么 设计及工作原理
前端·okhttp·csrf
MoSTChillax19 小时前
UI规范设计:从视觉到交互的全面指南
前端·ui·产品经理·设计规范·vibecoding
雪碧聊技术20 小时前
Vue + Element Plus 实现文本溢出显示省略号及悬浮提示
前端·javascript·css·vue.js·文本溢出省略
eric-sjq20 小时前
0.6B 前端生成模型本地部署实战:消费级显卡跑通 WanlyFrontend 全流程
前端·本地部署
小妖66621 小时前
设置了 box-sizing: border-box; 不管用,下边框还是被挤压没了
前端·css·html