我们有一个最初加载小部件列表的应用程序:
query Widgets() {
widgets() {
...Widgets
}
}
fragment Widgets on Widgets {
name
description
rootWidget
widgets {
...WidgetInterface
}
}
fragment WidgetInterface on WidgetInterface {
id
name
description
type
}
稍后我渲染这个小部件,其中每个 React 组件都用另一个 graphql 调用包装以获取单个小部件的数据。当我们最初获取这些数据时,我希望 apollo 从本地存储中获取数据,但它总是使服务器调用
#import '../fragments/WidgetInterface.graphql'
query Widget($id: ID!) {
widgetDetails(id: $id) {
...WidgetInterface
}
}
那么有没有办法检查为什么 apollo 不使用缓存的呢?
Apollo 按查询缓存您的查询结果。它从服务器而不是缓存中获取数据的原因是,第一次渲染组件时,您从未制作过widgetDetails
查询,只有一个widgets
one.
如果您想避免widgetDetails
查询,您可以设置您的组件以使用widgets
改为查询并自己按 id 过滤结果。就像是:
graphql(WIDGETS_QUERY, {
props: ({data, ownProps}) => ({ widget: data.widgets.filter(w => w === ownProps.widgetId) })
})(MyComponent)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)