查询局部状态变量不会立即返回结果

我正在查询局部变量isLeftSidebarOpen,我认为它应该立即返回无loading状态的结果。创建isLeftSidebarOpen时初始化ApolloClient

const data = {
    isLeftSidebarOpen: false,};
const initializeCache = cache => {
    cache.writeData({ data });
};
const cache = new InmemoryCache();

const client = new ApolloClient({
    link: new HttpLink({
        uri: 'http://localhost:4000/graphql',credentials: 'include',}),cache,resolvers,});

initializeCache(cache);
 query IsLeftSidebarOpen {
   isLeftSidebarOpen @client
 }
 const { data,loading } = useQuery(IS_LEFTSIDEBAR_OPEN);
 console.log(data);
 console.log(loading);

结果是:

undefined
true
{ isLeftSidebarOpen: false }
false

我希望是:

{ isLeftSidebarOpen: false }
false

我的理解有什么问题?

c274667915 回答:查询局部状态变量不会立即返回结果

本地解析器接口必须是异步的,因为apollo客户端可能根本不知道您是否将异步实现本地解析器。异步在两种情况下均有效,而同步则不可行。即使您的实现本身是同步的,apollo也会在将await设置为false之前loading使用该功能。

另一个“好处”是您的查询的行为完全相同,无论它是在本地还是在远程解决。

但是,cache.readQuery是一个同步操作,因此,如果您遇到了缓存命中,则可以使用它代替使用本地解析器立即返回数据。

本文链接:https://www.f2er.com/3077198.html

大家都在问