跳至主要内容
版本: v18.0.0

获取策略

重用本地缓存数据的首要步骤是向 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


此页面是否有用?

通过以下方式帮助我们改善网站: 回答几个简短的问题.