fix apollo client 3 initial item load bug
I guess if you return a reference to an object that doesn't exist, it registers as null; and you need to provide the `true` here to declare that it _is_ real and should be treated as an _insufficiently_ defined object?
This commit is contained in:
parent
8211444d67
commit
7f8401ff4b
2 changed files with 7 additions and 4 deletions
|
@ -62,7 +62,7 @@ function useOutfitState() {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const items = (data && data.items) || [];
|
const items = data?.items || [];
|
||||||
const itemsById = {};
|
const itemsById = {};
|
||||||
for (const item of items) {
|
for (const item of items) {
|
||||||
itemsById[item.id] = item;
|
itemsById[item.id] = item;
|
||||||
|
|
|
@ -8,8 +8,11 @@ const typePolicies = {
|
||||||
// when you remove an item from your outfit, or add an item from search,
|
// when you remove an item from your outfit, or add an item from search,
|
||||||
// Apollo knows it already has the data it needs and doesn't need to ask
|
// Apollo knows it already has the data it needs and doesn't need to ask
|
||||||
// the server again!
|
// the server again!
|
||||||
items: (_, { args, toReference }) =>
|
items: (_, { args, toReference }) => {
|
||||||
args.ids.map((id) => toReference({ __typename: "Item", id })),
|
return args.ids.map((id) =>
|
||||||
|
toReference({ __typename: "Item", id }, true)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
// Teach Apollo how to serve `petAppearance` queries from the cache. That
|
// Teach Apollo how to serve `petAppearance` queries from the cache. That
|
||||||
// way, when you switch pet poses, Apollo knows it already has the
|
// way, when you switch pet poses, Apollo knows it already has the
|
||||||
|
@ -17,7 +20,7 @@ const typePolicies = {
|
||||||
petAppearance: (_, { args, toReference }) => {
|
petAppearance: (_, { args, toReference }) => {
|
||||||
const { speciesId, colorId, pose } = args;
|
const { speciesId, colorId, pose } = args;
|
||||||
const id = `${speciesId}-${colorId}-${pose}`;
|
const id = `${speciesId}-${colorId}-${pose}`;
|
||||||
return toReference({ __typename: "PetAppearance", id });
|
return toReference({ __typename: "PetAppearance", id }, true);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue