Я не эксперт по GraphQL, поэтому ищу некоторые идеи. У меня есть приложение, которое выглядит так:
src/
components/
FooPage
BarPage
BazPage
Все 3 страницы будут делать одни и те же запросы, но с разными полями.
// FooPage
const GET_DOGS_1 = gql`
query GetDogs {
dogs {
id
}
}
`;
// BarPage
const GET_DOGS_2 = gql`
query GetDogs {
dogs {
id
breed
name
}
}
`;
// BazPage
const GET_DOGS_3 = gql`
query GetDogs {
dogs {
name
}
}
`;
Я заметил, что во многих приложениях есть папка src/graphql
с файлами внутри, представляющими ресурс. Так что в этом случае это будет что-то вроде src/graphql/dogs.ts
Тем не менее, я не чувствую, что это имеет смысл, если я пытаюсь настроить свое приложение так, чтобы запросы были совмещены со страницами, потому что все запросы будут специфичными для каждой страницы, что, как мне кажется, и есть весь смысл с помощью GraphQL? Поскольку вся идея состоит в том, чтобы иметь возможность не перегружать поля, которые вы не будете использовать, и размещение их всех в одном файле усложняет задачу и заставляет меня называть такие вещи, как GET_DOGS_1, GET_DOGS_2 и т. д.
Я думаю о чем-то более похожем
src/
components/
FooPage/
queries.ts
index.tsx
BarPage/
queries.ts
index.tsx
BazPage/
queries.ts
index.tsx
Сюда:
GET_DOGS
По вашему экспертному мнению, похоже ли это на типичную структуру GraphQL? Я не понимаю, почему приложения централизуют 1 версию каждого запроса. Я получаю это за мутации, поскольку обычно есть только один способ POST/создать данные. Заранее спасибо.
Централизация всех операций GraphQL или нет — выбор дизайна для вас и вашей команды при работе над проектом.
Некоторым командам удобнее иметь все операции в одном месте. Другие команды считают, что операции лучше располагать «рядом» с компонентами/страницами, которые их используют. (это можно применить к другим утилитам не только GraphQL)
Взгляните на полное руководство от apollo запросы определяются внутри компонентов/страниц, которые их используют, таким образом, упрощается обновление как запроса, так и их использования, поскольку нам не нужно переходить к нескольким файлам.
Мнение:
src/graphql
), чтобы его можно было повторно использовать в вашем приложении.