某些上下文:我正在开发一个React JS应用,该应用可以从数据库中读取地理点并以各种方式对其进行图形化/映射。有一些原始图和图仅显示数据库中的数据,但也有一些图和度量涉及对点的分析,例如斜率图,图下面积,直方图,欧几里得距离等。
我设置了一个GraphQL客户端,以便在安装了Apollo-Client的情况下向我的应用程序提供数据。这是GraphQL响应的示例:
FLUSH PRIVILEGES;
太好了!对于至少两个不同的数据视图来说,这是正确的形状,Apollo客户端使用{
"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
]
}
}
为我缓存了这个形状,而且我根本不需要redux。
困境:我需要一堆图,其中涉及许多衍生值,这些值被重用(例如我可能在2个不同的视图中使用斜率值)。我应该在哪里存储导出的数据?
现在,我把所有计算都塞进了React InMemoryCache
方法中,但这似乎不是一个好主意。
选项:
render()
内部的派生值。答案 0 :(得分:1)
react context api
或apollo-link-state
共享数据/方法。您可以尝试可观察物/类似Mobx的解决方案。我还将避免对数据更新自动进行所有可能的重新计算。使用组件/生命周期/上下文,您可以准备(缓存并共享)派生数据何时真正被使用。