【问题标题】:Apollo Client: Keep/Reset defaults on clearing or resetting storeApollo 客户端:在清除或重置存储时保留/重置默认值
【发布时间】:2019-04-17 16:14:24
【问题描述】:

我在本地使用apollo-link-state 存储错误,但清除缓存后出现以下错误。

我已在 apollo 客户端配置选项中将 errors 的默认值设置为空数组 []

但是,在apolloClient.cache.reset()apolloClient.store.reset() 之后,似乎我丢失了所有默认值,导致此错误:

任何想法如何解决这个问题?

【问题讨论】:

    标签: javascript apollo apollo-link-state


    【解决方案1】:

    使用 Apollo 2.x,您只需执行以下操作:

    cache.writeData({data : defaultData });
    
    client.onResetStore(() => {
      cache.writeData({data : defaultData });
    });
    

    假设您在此代码上方设置了缓存的默认数据。

    【讨论】:

      【解决方案2】:

      来自docs

      有时您可能需要重置应用程序中的存储,例如当用户注销时。如果您在应用程序的任何位置调用 client.resetStore,您将需要再次将默认值写入存储。 apollo-link-state 为您公开了一个 writeDefaults 函数。要将回调注册到 Apollo 客户端,请调用 client.onResetStore 并传入 writeDefaults。

      所以你可以这样做:

      const cache = new InMemoryCache()
      const link = withClientState({ cache, resolvers, defaults })
      
      const client = new ApolloClient({
        cache,
        link,
      })
      
      client.onResetStore(stateLink.writeDefaults)
      

      【讨论】:

      • 谢谢!一开始没用,看来writeDefaults有问题。通过将任何Query 添加到客户端类型定义来解决..
      猜你喜欢
      • 2018-07-30
      • 2019-01-10
      • 2021-04-20
      • 2019-02-24
      • 2019-06-10
      • 2023-03-13
      • 2023-02-17
      • 2018-02-09
      • 2021-04-04
      相关资源
      最近更新 更多