useQuery 与 client.readQuery 进行本地状态管理

Dom*_*iml 5 apollo-client

我们可以使用 Apollo 缓存进行本地状态管理。我的问题是使用以下方法的优点和缺点是什么:

const {data: {todos}} = useQuery (GET_TODOS)
Run Code Online (Sandbox Code Playgroud)

const client = useApolloClient ()
const {todos} = client.readQuery (GET_TODOS)
Run Code Online (Sandbox Code Playgroud)

从我早期的实验来看,第二个版本似乎也为了数据更新而重新渲染。因此,我看到的唯一语义差异是useQuery可以使用选项进行自定义。还有别的事吗?谢谢!!

Ism*_*rov 0

client.queryakauseQuery用于在 Apollo 客户端中执行查询以从服务器获取数据。无论数据是否存在于缓存中,它都会向服务器发送请求,每次调用时都会进行网络调用以检索新数据。

另一方面,readQuery是一种直接从 Apollo Client 缓存中读取数据的方法,无需发出网络请求。当您想要访问已获取并存储在本地缓存中的数据时,它非常有用,可以提供对该数据的即时访问。

client.query当您特别需要从服务器获取最新数据时使用,即使它可能已存在于缓存中。readQuery当您想要访问已加载到缓存中的数据而不发出额外的网络请求时使用,通过避免对已可用数据进行不必要的服务器调用来优化性能。