Я хотел изучить шаблон получения всех необходимых данных для страницы за один запрос. Допустим, у меня есть страница конфигурации пользователя, на которой нужен список команд, которым нужно назначить пользователя, и список ролей, которые пользователь может иметь. Я использую следующий запрос, чтобы получить первую страницу пользователей, а также все доступные роли и команды.
import { gql } from "@apollo/client";
const listUser = gql`
fragment listUser on Query {
users(page: $page, per: $per) {
edges {
node {
id
name
title
avatar
}
}
pageInfo {
count
}
}
}
`;
const roleFragment = gql`
fragment roleFragment on Query {
roles {
name
id
}
}
`;
const teamsFragment = gql`
fragment teamsFragment on Query {
teams {
nodes {
id
name
manager {
name
}
}
}
}
`;
export const getUserConfig = gql`
query getUserConfig($page: Int, $per: Int) {
...listUser
...roleFragment
...teamsFragment
}
${listUser}
${roleFragment}
${teamsFragment}
`;
И я использую его вот так (сгенерированный с помощью graphql-codegen):
const { loading, error, data, refetch } = useGetUserConfigQuery({
variables: {
page: 1,
per: 7,
}
});
Это работает очень хорошо и позволяет мне получать данные, которые мне нужны для страницы, за один проход. Однако всякий раз, когда я меняю переменную страницы для пользователей (очевидно, на go на следующую страницу), она будет обновлять все . Есть ли способ сделать это так, чтобы он обновлял только измененный фрагмент? Или есть лучший образец для того, что я пытаюсь выполнить sh? Спасибо!