为什么Relay Modern正在发出新请求,而不是使用缓存

时间:2018-04-29 10:55:02

标签: reactjs relayjs relay relaymodern

我有一个页面,您可以在其中查看当前项目,然后单击"下一步"看下一个。以下是此组件的外观:

NetAuth

我的期望,是每个项目仅在第一次请求时被提取,之后才从缓存中使用。

但我所看到的是每次点击" next"时在网络标签中发出的新请求,即使之前已请求此项目。如果我打开Relay DevTools - 具有此ID的项目已存在于商店中:

Relay DevTools

那为什么每次都会提出新请求? Isn< Relay Modern应该重用以前的缓存数据吗?

2 个答案:

答案 0 :(得分:2)

您可以传递QueryRenderer其中一个dataFrom道具:

  • NETWORK_ONLY - 每次都返回网络。
  • STORE_THEN_NETWORK - 尝试从商店呈现,然后使用网络中的新数据更新商店。

试试这个:

<QueryRenderer
  dataFrom="STORE_THEN_NETWORK"
  ...
/>

请参阅实施:https://github.com/facebook/relay/blob/master/packages/react-relay/modern/ReactRelayQueryRenderer.js#L297-L299

答案 1 :(得分:1)

我不认为它是默认情况下查询渲染器的工作方式。

您可能正在寻找relay-query-lookup-renderer