我想在我的本机应用程序中启用缓存。我正在使用GraphQL和Relay现代版。我发现在relay now中默认没有启用缓存,但它们已经从RelayQueryResponseCache
公开了relay-runtime
,我们可以将其添加到API中的fetchQuery
函数中。我阅读了有关它的讨论here和here,但没有看到任何开始的示例。有人可以帮我解决这个问题吗?
修改
好的我想出了一个解决方案。我认为它错过了一些东西,但到目前为止它满足了我们的需求。
我注意到将QueryRenderer
中的任何内容传递到cacheConfig
结果会将该值传递到我的环境中的fetchQuery
函数中。
所以我创建了一个Component
,它通过某种关系加载数据并将其解析为查询请求的正确json
结构。然后我把它归还给州。然后,我将包含Component
的{{1}}扩展为已创建的'缓存加载器'。现在,当QueryRenderer
被调用时,我要求缓存数据。在此期间,我设置了componentWillMount()
,因此我能够处理加载状态。从DB读取是异步的。
我也在其他组件中使用此类。每个人都处理其缓存数据。我把它传递给this.state.loading = true
。
但是我认为这需要为这个缓存支持的每个QueryRenderer
添加一些额外的逻辑。可能将缓存解析器作为Component
传递并立即解析环境中的缓存数据会更加清晰。