我有一份商品清单。数据存储在redux中。在项目组件did挂载时,每个项目都会获取数据(http调用)。在每个项目中,我都可以删除此项目。
我的问题是,当我删除一个项目时,列表重新渲染(因为大小改变了),重新挂载每个项目,让每个项目执行一个新的http调用。
有什么方法可以防止重新挂载吗?
发布于 2019-07-16 12:29:14
为此,您不需要使用React.Memo
或React.PureComponent
。当组件在其他项被移除的列表中时,它们不应该被卸载,如果发生这种情况,则表明您的问题出在列表的管理和更新方式上。
Here's a quick code sandbox演示了这一点-我已经为每个项目添加了一个console.log
到componentDidMount
,如果你打开控制台,你可以看到它在启动时只被每个项目调用一次。当您移除项目时,其他项目将保持挂载状态。
发布于 2019-07-16 12:02:08
使用React.Memo
或React.PureComponent
在孩子的道具中执行浅层比较,并仅在props
实际更改时重新呈现
发布于 2021-01-22 19:25:14
https://stackoverflow.com/questions/57056771
复制