【问题标题】:What is the proper way to get data out of Relay Modern's internal store?从 Relay Modern 的内部存储中获取数据的正确方法是什么?
【发布时间】:2018-07-13 12:16:45
【问题描述】:

我们目前正在探索 Relay Modern 中的一些未记录的 api,到目前为止,我们发现从 Relay Store 中获取数据以供应用程序使用的最佳方法是调用 environment.lookup 并使用从graphql 查询。

发生这种情况是因为 RecordSource.get 方法似乎从存储中返回了对象,但没有为嵌套在它下面的节点获取任何数据。有没有更好的方法来获取一个对象和所有连接到它的节点?

我们的用例是我们使用 applyOptimisticUpdate 来更新 Relay 的存储,以便在保存到我们的管理应用程序之前所做的更改对所有请求该数据的组件都是可见的。因此,一旦我们完成了这些更改,我们希望重新查询中继存储以获取记录的当前状态,清理它以实现真正的突变,并将更新的有效负载发送到服务器。

任何见解都将不胜感激,我将向 Relay 添加文档以及调查结果(如果需要)。

【问题讨论】:

    标签: javascript graphql relayjs relaymodern


    【解决方案1】:

    Relay 公开了一个 commitLocalUpdate 函数,该函数将环境和更新程序函数作为参数。更新程序的工作方式与您在突变中使用的方式相同——它接收存储的代理,您可以修改和返回该代理。您可以使用此函数的主体从存储中读取数据并发出您需要的任何副作用。

    虽然感觉有点像滥用 API,所以可能有更正确的做法。

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 2020-06-20
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      相关资源
      最近更新 更多