本文整理汇总了TypeScript中apollo-utilities.toIdValue函数的典型用法代码示例。如果您正苦于以下问题:TypeScript toIdValue函数的具体用法?TypeScript toIdValue怎么用?TypeScript toIdValue使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了toIdValue函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。
示例1: toIdValue
person: (_: any, args: any) => toIdValue(args['id']),
开发者ID:dotansimha,项目名称:apollo-client,代码行数:1,代码来源:diffAgainstStore.ts
示例2: readStoreResolver
function readStoreResolver(
object: StoreObject,
typename: string | void,
fieldName: string,
args: any,
context: ReadStoreContext,
{ resultKey, directives }: ExecInfo,
): ExecResult<StoreValue> {
let storeKeyName = fieldName;
if (args || directives) {
// We happen to know here that getStoreKeyName returns its first
// argument unmodified if there are no args or directives, so we can
// avoid calling the function at all in that case, as a small but
// important optimization to this frequently executed code.
storeKeyName = getStoreKeyName(storeKeyName, args, directives);
}
let fieldValue: StoreValue | void = void 0;
if (object) {
fieldValue = object[storeKeyName];
if (
typeof fieldValue === 'undefined' &&
context.cacheRedirects &&
typeof typename === 'string'
) {
// Look for the type in the custom resolver map
const type = context.cacheRedirects[typename];
if (type) {
// Look for the field in the custom resolver map
const resolver = type[fieldName];
if (resolver) {
fieldValue = resolver(object, args, {
getCacheKey(storeObj: StoreObject) {
return toIdValue({
id: context.dataIdFromObject(storeObj),
typename: storeObj.__typename,
});
},
});
}
}
}
}
if (typeof fieldValue === 'undefined') {
return {
result: fieldValue,
missing: [{
object,
fieldName: storeKeyName,
tolerable: false,
}],
};
}
if (isJsonValue(fieldValue)) {
fieldValue = fieldValue.json;
}
return {
result: fieldValue,
};
}
开发者ID:apollostack,项目名称:apollo-client,代码行数:65,代码来源:readFromStore.ts
示例3: toIdValue
person: (_: any, args: any) =>
toIdValue({ id: args['id'], typename: 'Person' }),
开发者ID:apollostack,项目名称:apollo-client,代码行数:2,代码来源:diffAgainstStore.ts
示例4: toIdValue
device: (_, args) =>
toIdValue(
cache.config.dataIdFromObject({__typename: 'Device', id: args.id}),
),
开发者ID:Pajn,项目名称:RAXA,代码行数:4,代码来源:store.ts
示例5: assertIdValue
const readStoreResolver: Resolver = (
fieldName: string,
idValue: IdValueWithPreviousResult,
args: any,
context: ReadStoreContext,
{ resultKey, directives }: ExecInfo,
) => {
assertIdValue(idValue);
const objId = idValue.id;
const obj = context.store.get(objId);
let storeKeyName = fieldName;
if (args || directives) {
// We happen to know here that getStoreKeyName returns its first
// argument unmodified if there are no args or directives, so we can
// avoid calling the function at all in that case, as a small but
// important optimization to this frequently executed code.
storeKeyName = getStoreKeyName(storeKeyName, args, directives);
}
let fieldValue: StoreValue | string | void = void 0;
if (obj) {
fieldValue = obj[storeKeyName];
if (
typeof fieldValue === 'undefined' &&
context.cacheRedirects &&
(obj.__typename || objId === 'ROOT_QUERY')
) {
const typename = obj.__typename || 'Query';
// Look for the type in the custom resolver map
const type = context.cacheRedirects[typename];
if (type) {
// Look for the field in the custom resolver map
const resolver = type[fieldName];
if (resolver) {
fieldValue = resolver(obj, args, {
getCacheKey(storeObj: StoreObject) {
return toIdValue({
id: context.dataIdFromObject(storeObj),
typename: storeObj.__typename,
});
},
});
}
}
}
}
if (typeof fieldValue === 'undefined') {
if (!context.returnPartialData) {
throw new Error(
`Can't find field ${storeKeyName} on object (${objId}) ${JSON.stringify(
obj,
null,
2,
)}.`,
);
}
context.hasMissingField = true;
return fieldValue;
}
// if this is an object scalar, it must be a json blob and we have to unescape it
if (isJsonValue(fieldValue)) {
// If the JSON blob is the same now as in the previous result, return the previous result to
// maintain referential equality.
//
// `isEqual` will first perform a referential equality check (with `===`) in case the JSON
// value has not changed in the store, and then a deep equality check if that fails in case a
// new JSON object was returned by the API but that object may still be the same.
if (
idValue.previousResult &&
isEqual(idValue.previousResult[resultKey], fieldValue.json)
) {
return idValue.previousResult[resultKey];
}
return fieldValue.json;
}
// If we had a previous result, try adding that previous result value for this field to our field
// value. This will create a new value without mutating the old one.
if (idValue.previousResult) {
fieldValue = addPreviousResultToIdValues(
fieldValue,
idValue.previousResult[resultKey],
);
}
return fieldValue;
};
开发者ID:NewSpring,项目名称:apollo-client,代码行数:96,代码来源:readFromStore.ts
注:本文中的apollo-utilities.toIdValue函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论