我想在我的反应本机应用程序中启用缓存。我正在使用带有现代中继的 GraphQL。我发现在现代中继中默认情况下不启用缓存,但它们已经暴露RelayQueryResponseCache
在relay-runtime
中,我们可以将其添加到fetchQuery
API 中的函数中。我在这里和这里阅读了关于它的讨论,但还没有看到任何开始的例子。有人可以帮我解决这个问题吗?
编辑:
好的,我想出了一个解决方案。我认为它遗漏了一些东西,但到目前为止它满足了我们的需求。我注意到将任何内容传递QueryRenderer
给cacheConfig
结果,然后将该值传递给fetchQuery
我环境中的函数。因此,我创建了一个Component
通过某种关系加载数据并将其解析为json
查询请求的正确结构的方法。然后我将它返回到状态。然后我用创建的“缓存加载器”扩展了我的Component
内容。QueryRenderer
现在当componentWillMount()
被调用时,我要求缓存数据。在此期间我已经设置this.state.loading = true
,所以我能够处理加载状态。从数据库读取是异步的。我也在其他组件中使用这个类。每个人都处理其缓存数据。我只是把它传给QueryRenderer
.
但是,我认为这需要为每个Component
受此缓存支持的逻辑添加一些额外的逻辑。可能将缓存解析器作为cacheConfig
并立即在环境中解析缓存的数据会更干净。