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);
相关推荐
l1m0_20 分钟前
AI设计工具有哪些?Paico、Pixso AI、墨刀AI、Lovable、Codex怎么选
前端·人工智能·ai·设计·墨刀·codex·pixso
web打印社区22 分钟前
Lodop在Edge和双核浏览器-先分清内核
前端·javascript·edge·pdf·ecmascript·html5
西瓜拿铁好喝28 分钟前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
IT_陈寒28 分钟前
深入理解SpringBoot:核心原理与最佳实践
前端·人工智能·后端
风骏时光牛马1 小时前
大模型综合能力多维评测:性能、逻辑与落地表现对比
前端
liuchangng1 小时前
React 19 + Vite 6 实战:从教材 PDF 到 866 词间隔重复单词 App
前端·react.js·pdf·vite·开源项目
Dwzun1 小时前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
小码哥_常7 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮9 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀11 小时前
Vue插槽
前端·javascript·vue.js