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);
相关推荐
江米小枣tonylua16 分钟前
TypeScript 全面の拥抱 !Prisma 8 + Electron 升级实战
前端
闪耀之光M7831 分钟前
npm命令解析
前端
咸鱼老弟38 分钟前
AI Agent 的"自主性悖论"——为什么给它的自由度越大,越要配一套更硬的护栏
前端·人工智能
默_笙1 小时前
💫 闭包是个背包:拆解小米前端面试题里的三道"闭包陷阱"
前端·javascript·面试
天若有情6731 小时前
粒子星空背景单页HTML模板|炫酷动态星空特效网页(纯前端)
前端·html·css动画·网页特效·粒子星空·静态网页模版
工业涂料百问2 小时前
【趋势前沿】系列(三)工业涂料国产替代的三个台阶:航空、海工、电子的突破路径与认证壁垒
前端
前端snow2 小时前
ai agent --- agentic RAG
前端
gyratesky2 小时前
记录一种很新的大屏开发方式
前端·数据可视化
xy34533 小时前
Axure 9.0 中继器核心结构
前端·ui·html·axure·原型·产品设计