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);
相关推荐
ProgramHan3 分钟前
React 19 新特性深度解析:告别 useEffect 的时代
前端·react.js·前端框架
次元工程师!3 分钟前
Sa-Token完成路由鉴权
java·服务器·前端
IT_陈寒7 分钟前
Redis 7.0 实战:5个被低估但超实用的新特性,让你的QPS提升40%
前端·人工智能·后端
web守墓人15 分钟前
【前端】ikun-pptx编辑器前瞻问题四:通过AI编写一个前端pptx编辑器
前端
泰勒疯狂展开16 分钟前
Vue3研学-标签ref属性与TS接口泛型
前端·javascript·vue.js
小二·17 分钟前
前端 DevOps 完全指南:从 Docker 容器化到 GitHub Actions 自动化部署(Vue 3 + Vite)
前端·docker·devops
忒可君17 分钟前
2026新年第一篇:uni-app + AI = 3分钟实现数据大屏
前端·vue.js·uni-app
Komorebi゛18 分钟前
【CSS】线性流动边框样式
前端·css·css3
我不吃饼干25 分钟前
手写 Vue 模板编译(生成篇)
前端·vue.js
s小布丁27 分钟前
vue2纯前端使用Docxtemplater生成word报告,包含echart图表,表格
前端