在 Relay Modern 中设置多个网络层

Posted

技术标签:

【中文标题】在 Relay Modern 中设置多个网络层【英文标题】:Setting up multiple network layers in Relay Modern 【发布时间】:2018-08-30 14:31:41 【问题描述】:

我正在使用带有现代继电器的 react-native 应用程序。

目前我们应用的 fetchQuery 实现,只是在网络上进行 fetch(就像在 https://facebook.github.io/relay/docs/en/network-layer.html 中一样),

尽管有可能存在另一个本地网络层,例如 https://github.com/relay-tools/relay-local-schema,它从本地数据库(例如 sqlite/realm)返回数据。

有没有办法从本地网络层设置离线优先响应,然后自动请求到真实网络,这也用更新鲜的数据填充存储(以及写入本地数据库)? 他们还应该/可以共享同一个商店吗?

根据 Network.create() 的要求,它应该返回一个包含有效负载的 Promise,似乎不可能返回多个值。

感谢任何想法/帮助/建议。

【问题讨论】:

undocumented api facebook.github.io/relay/docs/en/next/fetch-query.html 有一点帮助,但会返回一些被屏蔽的数据。 【参考方案1】:

你试图实现它的复杂性,并且不适用于长时间缓存的简单方法。

您可能知道,现代中继器使用本地存储和您正在获取的数据的精确副本,您可以根据需要配置此存储缓存,没有突变缓存。

要了解这是如何实现自定义 Relay Modern 或 Classic 网络层的最佳库,您可以在 https://github.com/nodkz/react-relay-network-modern 中找到

我的建议:设置你的缓存并观察你的请求......(你会喜欢它的)

在接力中思考, https://facebook.github.io/relay/docs/en/thinking-in-relay.html

【讨论】:

以上是关于在 Relay Modern 中设置多个网络层的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中设置 GraphQL Relay API

Relay中如何动态改变网络层

Relay 的注入网络层未被识别为 React 应用程序中的函数

如何在 TypeScript 中使用 Relay Modern(babel-plugin-relay 和 relay-compiler)?

如何在 Relay Modern 中取消订阅

如何在 Relay Modern 中强制获取