У меня есть запрос, который выглядит следующим образом:
export const GET_PROJECT = gql`
query GetProject($id: String!) {
homework {
getProject(id: $id) {
...ProjectFields
}
}
}
${ProjectFieldsFragment}
`;
Мой InMemoryCache
выглядит следующим образом:
const cache = new InMemoryCache({
dataIdFromObject: ({ id }) => id,
cacheRedirects: {
Query: {
getProject: (_, args, obj) => {
console.log('Hello world');
},
},
}
});
Приведенное выше перенаправление кэша никогда не срабатывает. Однако, если я изменю его так, чтобы он выглядел следующим образом:
const cache = new InMemoryCache({
dataIdFromObject: ({ id }) => id,
cacheRedirects: {
Query: {
homework: (_, args, obj) => {
console.log('Hello world');
},
},
}
});
Он попадет в цель, однако у меня нет ни одного аргумента, переданного во вложенном запросе getProject
. Что также сбивает с толку, так это то, что эта функция перенаправления кэша используется для запросов, которые, по-видимому, не должны выполняться, например:
export const SESSION = gql`
query Session {
session {
user {
id
fullName
email
}
organizations {
name
id
}
}
}
`;
Так что же происходит? Я прибег к использованию readFragment
в тех местах, где я хочу, чтобы кэш перенаправлялся, но я бы хотел, чтобы логики c стали централизованными.