从 Relay Modern 的内部存储中获取数据的正确方法是什么?



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

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

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

任何见解将不胜感激,我将在 Relay 中添加包含调查结果的文档(如果需要)。

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

不过,这感觉有点像滥用API,因此可能有更正确的方法。

最新更新