【问题标题】:Apollo Optimistic UI update with different ID field name使用不同的 ID 字段名称更新 Apollo Optimistic UI
【发布时间】:2019-05-04 00:59:58
【问题描述】:

我正在尝试利用 https://www.apollographql.com/docs/react/features/optimistic-ui.html 中描述的 Apollo 的乐观更新功能(在 React-Native 应用程序中)。不幸的是,据我所知,这仅在您更新使用名为“id”的字段作为主键的记录时才有效。不幸的是,我在很多情况下该字段具有不同的名称。有什么方法可以告诉 Apollo 使用不同的 id 字段名称?

【问题讨论】:

    标签: apollo react-apollo


    【解决方案1】:

    假设您使用 apollo 的 InMemoryCache,您可以在初始化缓存时传递 dataIdFromObject,它可以返回 id 的值。始终使用 id 的默认设置如下所示:

    import { InMemoryCache } from 'apollo-cache-inmemory';
    
    const cache = new InMemoryCache({
      dataIdFromObject: o => o.id
    });
    

    要更改这一点,您可以创建一个函数来检查传入对象中的 .__typename 键,以根据 GraphQL 类型返回正确的字段;

    import { InMemoryCache } from 'apollo-cache-inmemory';
    
    const cache = new InMemoryCache({
      dataIdFromObject: ({__typename, id, ...rest}) => {
        switch(__typename){
          case 'Foo': return rest.foo,
          case 'Bar': return rest.bar,
          default: return id,
        }
      }
    });
    

    【讨论】:

    • 我将 Apollo 与 AWS Appsync 一起使用,但这与它的 cacheOptions 一起使用,谢谢!
    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 2018-07-09
    • 2018-09-24
    • 2019-02-20
    • 2017-10-17
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多