程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Apollo GraphQl存储派生数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Apollo GraphQl存储派生数据?

开发过程中遇到Apollo GraphQl存储派生数据的问题如何解决?下面主要结合日常开发的经验,给出你关于Apollo GraphQl存储派生数据的解决方法建议,希望对你解决Apollo GraphQl存储派生数据有所启发或帮助;
  1. Redux可能是一个很好的选择-关注点/逻辑/数据分离和良好的可测试性。
  2. 这取决于最终的缓存命中率/未命中率,额外资源/功能的成本-我会避免这种情况。
  3. 渲染不是用于计算的最佳位置(还有其他生命周期方法)。组件可以使用自己的状态(或新的getDerivedStateFromProps),但只能与子级共享。
  4. 您可以使用react context APIapollo-link-state共享数据/方法。您可以尝试可观察/类似mobx的解决方案。

我也将避免自动对数据更新进行所有可能的重新计算。使用组件/生命周期/上下文,您可以准备(缓存和共享)派生数据在实际使用时的状态。

解决方法

一些上下文 :我正在开发一个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。

困境 :我需要的一堆图涉及许多被重用的派生值(例如我可能在2个不同的视图中使用斜率值)。我应该在哪里存储导出的数据?

现在,我把所有计算都塞进了React render()方法,但这似乎不是一个好主意。

选项:

  1. 将Redux用于派生数据,将所有计算都放入化简器中,并以某种方式使其与Apollo graphql缓存中的内容保持同步。
  2. 在服务器上进行派生(然后可以对其进行缓存),并通过网络发送两个原始+派生。更多的网络流量,但更少的客户端计算。
  3. render()每当传入的graphql数据发生更改时,继续计算内部的派生值。
  4. 也许我没想到的事&Hellip;

大佬总结

以上是大佬教程为你收集整理的Apollo GraphQl存储派生数据全部内容,希望文章能够帮你解决Apollo GraphQl存储派生数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: