我最近开始使用React,到目前为止,我已经构建了几个应用程序,包括一个用于操作和可视化传感器数据的实时应用程序。该数据包括来自100Hz-200Hz的websockets的高吞吐量,结构化JSON帧。
由于我的应用程序在复杂性方面迅速增长,在通过官方文档和Dan Abramov的课程了解Redux之后,我发现使用Redux非常有吸引力来管理应用程序的视觉状态,路由,服务器信息等。
在我的React-non-Redux应用程序中,一切都保持在本地状态,但这在架构设计中有成本。现在,我想开始重构应用程序以集成redux。由于我目前的知识有限,我一直坚持这个关于存储传感器流的地方的架构决策'数据以及对应用程序呈现和处理性能的影响。
在redux文档中,有一些经验法则可用于确定应将哪种数据放入Redux:
有几个主题在讨论这个问题,但没有任何确定的答案。我也无法对此发表评论(这里有SO noob):
我发现了我需要学习的许多不同的后果,包括中间件,RxJS等。我想进一步推动开发,但由于所有这些都需要时间来掌握,我想参考社区一些方向。
提前致谢!
答案 0 :(得分:3)
我目前正在使用redux为小部件提供数据,我会说传入速率大约在80-90赫兹之间,我仍然在小部件画布上获得60 fps'。就像丹在他的帖子中所说,使用redux没有什么本质上的缓慢。但是,每秒更新你的UI 200次是完全没必要的,我至少会添加一些中间件(如果你不想拥有一台服务器)来减少每秒最多60次的更新。 Redux可能不会那么慢,但尝试每秒渲染200次肯定是。
但是我会说,我最近必须做出同样的决定,并将数据流保存在redux中,使得在我的应用程序中访问它们变得更加简单。
我发现使用网络工作者是将数据合并到单个更新中的好方法。如果你还没有我会检查出https://developer.mozilla.org/en-US/docs/Web/API/Worker。如果您决定朝这个方向前进,它可能会对性能有很大帮助,因为工作人员将直接处理websocket连接,并以更加可控的方式执行动作调度。