调用 setVariables 是强制从服务器重新获取而不是使用缓存的结果?
Calling setVariables is forcing a refetch from the server instead of using the cached results?
我试图在 table 中多次渲染一个组件(即每 table 行一个组件实例)。该组件需要设置一个 Relay 变量来确定如何呈现组件的内容。
我通过在组件的 componentWillMount 生命周期事件中调用 this.props.relay.setVariables 来设置此变量。在我的特定情况下,每个组件最终都需要来自服务器的同一组数据,因此我希望第一个调用 this.props.relay.setVariables 的组件会产生一个新的从服务器获取,但 table 中的每个后续组件将简单地使用从第一个组件获取的结果,因为生成的查询对于 table.[=10= 中的每个组件完全相同]
然而,实际发生的是对 table 中的每个组件进行新的提取,这对性能来说很糟糕。有什么方法可以告诉 Relay 重用原来的 fetch 吗?我认为它应该通过缓存查询自动执行此操作。
仅供参考...查询正在通过 node 接口,片段类型是接口图类型。
如果每个项目的查询结构或数据相同,则完全没有关系。项目由ID缓存,如果ID不同(我们知道节点接口需要ID),中继需要每个ID的数据。
为什么要 ID?因为这可以使数据扁平化并导致更有效和更细粒度的缓存。它还允许 Relay 进行高效的差异化,这意味着只请求每个 ID 缺少的字段。
如果在您的特定情况下每个组件最终都需要同一组数据,请考虑为父组件使用单个中继容器并将相同的数据传递到每一行。问题解决了!
我试图在 table 中多次渲染一个组件(即每 table 行一个组件实例)。该组件需要设置一个 Relay 变量来确定如何呈现组件的内容。
我通过在组件的 componentWillMount 生命周期事件中调用 this.props.relay.setVariables 来设置此变量。在我的特定情况下,每个组件最终都需要来自服务器的同一组数据,因此我希望第一个调用 this.props.relay.setVariables 的组件会产生一个新的从服务器获取,但 table 中的每个后续组件将简单地使用从第一个组件获取的结果,因为生成的查询对于 table.[=10= 中的每个组件完全相同]
然而,实际发生的是对 table 中的每个组件进行新的提取,这对性能来说很糟糕。有什么方法可以告诉 Relay 重用原来的 fetch 吗?我认为它应该通过缓存查询自动执行此操作。
仅供参考...查询正在通过 node 接口,片段类型是接口图类型。
如果每个项目的查询结构或数据相同,则完全没有关系。项目由ID缓存,如果ID不同(我们知道节点接口需要ID),中继需要每个ID的数据。
为什么要 ID?因为这可以使数据扁平化并导致更有效和更细粒度的缓存。它还允许 Relay 进行高效的差异化,这意味着只请求每个 ID 缺少的字段。
如果在您的特定情况下每个组件最终都需要同一组数据,请考虑为父组件使用单个中继容器并将相同的数据传递到每一行。问题解决了!