Graphql 查询局部状态变量不需要';不要立即返回结果
我正在查询我的局部变量isLeftSidebarOpen,我认为它应该立即返回结果,而不必加载状态<代码>isLeftSidebarOpen在创建Graphql 查询局部状态变量不需要';不要立即返回结果,graphql,react-apollo,apollo-client,Graphql,React Apollo,Apollo Client,我正在查询我的局部变量isLeftSidebarOpen,我认为它应该立即返回结果,而不必加载状态isLeftSidebarOpen在创建客户端时初始化 const data = { isLeftSidebarOpen: false, }; const initializeCache = cache => { cache.writeData({ data }); }; 结果是: undefined true { isLeftSidebarOpen: false } fal
客户端
时初始化
const data = {
isLeftSidebarOpen: false,
};
const initializeCache = cache => {
cache.writeData({ data });
};
结果是:
undefined
true
{ isLeftSidebarOpen: false }
false
鉴于我希望:
{ isLeftSidebarOpen: false }
false
我的理解有什么问题?本地解析器接口必须是异步的,因为apollo客户端根本不知道您是否将异步实现本地解析器。异步在这两种情况下都有效,同步则不行。即使您的实现本身是同步的,apollo也会在将加载设置为false之前等待该函数 另一个“好处”是,无论查询是在本地还是远程解析,查询的行为都完全相同
但是,
cache.readQuery
是一个同步操作,因此您可以使用它而不是使用本地解析器立即返回数据,如果缓存命中。本地解析器接口必须是异步的,因为apollo客户端根本不知道您是否将异步实现本地解析器。异步在这两种情况下都有效,同步则不行。即使您的实现本身是同步的,apollo也会在将加载设置为false之前等待该函数
另一个“好处”是,无论查询是在本地还是远程解析,查询的行为都完全相同
但是,cache.readQuery
是一个同步操作,因此如果缓存命中,您可以使用它而不是使用本地解析器立即返回数据
const { data, loading } = useQuery(IS_LEFTSIDEBAR_OPEN);
console.log(data);
console.log(loading);
undefined
true
{ isLeftSidebarOpen: false }
false
{ isLeftSidebarOpen: false }
false