获取策略
重用本地缓存数据的首要步骤是向 loadQuery
函数传递一个 fetchPolicy
,该函数可以由 useQueryLoader
提供(参见 获取查询部分)
const React = require('React');
const {graphql} = require('react-relay');
function AppTabs() {
const [
queryRef,
loadQuery,
] = useQueryLoader(HomeTabQuery);
const onSelectHomeTab = () => {
loadQuery({id: '4'}, {fetchPolicy: 'store-or-network'});
}
// ...
}
提供的 fetchPolicy
将决定
- 是否 查询应从本地缓存中获取,以及
- 是否 应发出网络请求以从服务器获取查询,这取决于 存储中该查询数据的可用性。
默认情况下,Relay 会尝试从本地缓存中读取查询;如果该查询的任何数据 缺失 或 陈旧,它将从网络获取整个查询。 此默认 fetchPolicy
称为“store-or-network”。
具体来说,fetchPolicy
可以是以下任何选项:**
- "store-or-network": (默认) 将 重用本地缓存的数据,并且 仅 在查询的任何数据 缺失 或 陈旧 时才会发送网络请求。 如果查询已完全缓存,则 不会 发出网络请求。
- "store-and-network": 将 重用本地缓存的数据,并且 始终 会发送网络请求,而不管存储中是否有任何数据 缺失 或 陈旧。
- "network-only": 将 不会 重用本地缓存的数据,并且 始终 会发送网络请求以获取查询,忽略任何可能在本地缓存的数据,以及它是否 缺失 或 陈旧。
- "store-only": 将 仅 重用本地缓存的数据,并且 永远 不会发送网络请求以获取查询。 在这种情况下,获取查询的责任落在调用者身上,但此策略也可以用于读取和操作完全 本地 的数据。
请注意,在 获取和渲染不同的数据 部分中讨论的 refetch
函数也接受 fetchPolicy
。
此页面是否有用?
通过以下方式帮助我们改善网站: 回答几个简短的问题.