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);
相关推荐
掘金安东尼5 小时前
纯 CSS 实现弹性文字效果
前端·css
牛奶6 小时前
Vue 基础理论 & API 使用
前端·vue.js·面试
牛奶6 小时前
Vue 底层原理 & 新特性
前端·vue.js·面试
anOnion6 小时前
构建无障碍组件之Radio group pattern
前端·html·交互设计
pe7er6 小时前
状态提升:前端开发中的状态管理的设计思想
前端·vue.js·react.js
SoaringHeart7 小时前
Flutter调试组件:打印任意组件尺寸位置信息 NRenderBox
前端·flutter
晚风予星8 小时前
Ant Design Token Lens 迎来了全面升级!支持在 .tsx 或 .ts 文件中直接使用 Design Token
前端·react.js·visual studio code
sunny_8 小时前
⚡️ vite-plugin-oxc:从 Babel 到 Oxc,我为 Vite 写了一个高性能编译插件
前端·webpack·架构
GIS之路8 小时前
ArcPy 开发环境搭建
前端
林小帅10 小时前
【笔记】OpenClaw 架构浅析
前端·agent