1

我正在开发一个使用 ImmutableJS 存储所有状态的 React 和 Redux 应用程序。该应用程序以大约 100 Hz 的频率从传感器接收数据。我需要绘制一个实时更新的图表并显示这些数据。我一直在为图表使用 React-Vis,问题是它需要一个对象数组而不是 ImmutableJS 数据结构。

我通过将 ImmutableJS 数据结构转换为这样的数组解决了这个问题:

const data = this.props.HEGPercentage.toIndexedSeq().toArray()

这可行,但如果我用真实数据运行它,我遇到的问题是巨大的滞后,我认为因为它必须一直创建一个新数组。

如何为此创建高性能解决方案并仍然使用 ImmutableJS?

4

1 回答 1

1

在普通 JS 对象和 Immutable.js 对象之间进行转换可能非常昂贵。特别是,fromJS()andtoJS()操作是 Immutable.js 库中最昂贵的操作,应尽可能避免(尤其是在 ReduxmapState函数中)。

听起来你至少已经走在了正确的轨道上。使用记忆选择器来减少昂贵的转换,如果可能的话尝试对这些数字进行四舍五入,以减少无意义的更改,并减少总体更新的总数。

我的React/Redux 链接列表中有大量关于提高 React、Redux 和 Immutable.js 性能的文章,这可能会有所帮助。

还值得注意的是,出于各种原因,我个人建议不要使用 Immutable.js

于 2017-09-18T16:32:28.643 回答