Javascript Redux:更新状态和滚动性能问题

Javascript Redux:更新状态和滚动性能问题,javascript,performance,scroll,redux,react-redux,Javascript,Performance,Scroll,Redux,React Redux,在我正在构建的React+Redux应用程序中,我可能需要一些帮助来解决性能问题 我有一个容器组件(一个路由),它接收一些使用“重新选择”记忆的属性 路由为每个用户,并且一个用户有多个录制。选择器只是按日期降序排序并保存在数组中的录制(对象) 问题是,当用户滚动记录列表时,我需要启动一些操作。每一次开火都会让卷轴变得可怕。真正奇怪的是,即使状态更改没有导致重新渲染,也会发生这种情况。我之所以知道这一点,是因为对于要更新的渲染树部分,我的shouldComponentUpate()始终返回fals

在我正在构建的React+Redux应用程序中,我可能需要一些帮助来解决性能问题

我有一个容器组件(一个路由),它接收一些使用“重新选择”记忆的属性

路由为每个用户,并且一个用户有多个录制。选择器只是按日期降序排序并保存在数组中的录制(对象)

问题是,当用户滚动记录列表时,我需要启动一些操作。每一次开火都会让卷轴变得可怕。真正奇怪的是,即使状态更改没有导致重新渲染,也会发生这种情况。我之所以知道这一点,是因为对于要更新的渲染树部分,我的
shouldComponentUpate()
始终返回false,并且抖动和跳跃仍然会发生

我将尝试规范化录制,这些录制目前是嵌套在用户对象中的一个数组,但我怀疑这是否有帮助。我之所以这样说,是因为被调度并导致滚动问题的两个操作都在对状态进行非常简单的更新——一个简单地更新状态树顶部的值(对于该路由),另一个将新值推送到状态树顶部的数组中。当我简单地注释掉这些调度,但执行这些调度之前的所有逻辑时,我获得了完美的滚动性能

我想知道我是否应该在用户滚动时不尝试执行这些状态更新,而应该只在滚动停止时执行它们


感谢您的帮助

所以,我最终解决了这个问题。修复此问题的主要方法是在滚动时停止更新redux状态容器,并将状态保留在本地组件中。现在它是超级平滑的,几乎和你在本地应用程序中看到的一样小。