Apollo Optimistic UI 使用不同的 ID 字段名称进行更新
Apollo Optimistic UI update with different ID field name
我正在尝试使用 https://www.apollographql.com/docs/react/features/optimistic-ui.html 中描述的 Apollo 的乐观更新功能(在 React-Native 应用程序中)。不幸的是,据我所知,这仅在您更新使用名为 "id" 的字段作为主键的记录时才有效。不幸的是,我有很多情况下该字段具有不同的名称。有什么方法可以告诉 Apollo 使用不同的 id 字段名称吗?
假设您使用 apollo 的 InMemoryCache
,您可以在初始化缓存时传递 dataIdFromObject,它可以 return 一个 id
的值。默认情况下,始终使用 id
看起来像这样:
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
dataIdFromObject: o => o.id
});
要更改此设置,您可以创建一个函数,根据 GraphQL 类型检查传入对象中的 .__typename
键是否为 return 正确的字段;
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,
}
}
});
我正在尝试使用 https://www.apollographql.com/docs/react/features/optimistic-ui.html 中描述的 Apollo 的乐观更新功能(在 React-Native 应用程序中)。不幸的是,据我所知,这仅在您更新使用名为 "id" 的字段作为主键的记录时才有效。不幸的是,我有很多情况下该字段具有不同的名称。有什么方法可以告诉 Apollo 使用不同的 id 字段名称吗?
假设您使用 apollo 的 InMemoryCache
,您可以在初始化缓存时传递 dataIdFromObject,它可以 return 一个 id
的值。默认情况下,始终使用 id
看起来像这样:
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache({
dataIdFromObject: o => o.id
});
要更改此设置,您可以创建一个函数,根据 GraphQL 类型检查传入对象中的 .__typename
键是否为 return 正确的字段;
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,
}
}
});