一些上下文 :我正在开发一个React JS应用,该应用从数据库中读取地理点,并以各种方式对其进行图形化/映射。有一些原始图和图仅显示数据库中的数据,但也有一些图和度量涉及对点的分析,例如斜率图,图下面积,直方图,欧几里得距离等。
我已经设置了GraphQL客户端,以便在安装了Apollo-Client的情况下将数据提供给我的应用程序。这是GraphQL响应的示例:
{ "data": { "Points": [ { "pid": 13196, "x": 251.88491821289062, "y": 374.1650085449219 }, { "pid": 13197, "x": 257.6238708496094, "y": 374.17498779296875 }, { "pid": 13198, "x": 264.04315185546875, "y": 374.5350036621094 }, ...etc ] } }
这很棒!对于至少两个不同的数据视图来说,这是正确的形状,Apollo客户端使用InMemoryCache我为它缓存了这个,而我根本不需要redux。
InMemoryCache
困境 :我需要的一堆图涉及许多被重用的派生值(例如我可能在2个不同的视图中使用斜率值)。我应该在哪里存储导出的数据?
现在,我把所有计算都塞进了React render()方法,但这似乎不是一个好主意。
render()
选项:
react context api
apollo-link-state
我也将避免自动对数据更新进行所有可能的重新计算。使用组件/生命周期/上下文,您可以准备(缓存和共享)派生数据在实际使用时的状态。