Я бы хотел использовать apollo-server
в браузере на стороне клиента. Это возможно? Позвольте мне объяснить, почему я считаю, что это было бы здорово.
Я хочу, чтобы в моем приложении React был унифицированный и абстрактный API данных. И я хочу, чтобы этот API был GraphQL (не Redux, не пользовательские хуки / контексты, просто useQuery
). Я хотел бы сделать что-то вроде этого:
- Создать "клиентскую схему", которая на самом деле представляет собой смесь серверной схемы и локального состояния.
- Пишите средства распознавания локально. Это ключ. Они могут просто использовать стандартный вызов API, но они также могут играть с локальным состоянием. Или и то и другое.
Я знаю, что есть возможность иметь локальное состояние в apollo-client
(описано здесь: https://www.apollographql.com/docs/react/data/local-state/). Но в этом решении отсутствуют 2 вещи:
- Я не хочу использовать флаг
@client
в каждом локальном запросе или мутации. Это не имеет смысла, это не абстрактный API. Если пользовательский интерфейс вызывает query { products }
, он не хочет знать, является ли он локальным илидля этого требуется некоторое действие сервера. Если он локальный, он будет всегда возвращать непустые data
, а loading
всегда будет равняться true
. Благодаря этому я могу создать ориентированный на будущее пользовательский интерфейс, который выиграл 'не нужно менять, если я перенесу какую-то часть реализации с клиента на сервер или наоборот. - Я не могу переопределить схему сервера. Поэтому, если в схеме сервера есть
query { products }
, я могу 'я не могу переопределить это локально, чтобы заставить его делать что-то еще (например, сделать некоторые дополнительные вещи с локальным состоянием).
Я бы хотел услышать, имеет ли моя идея смысл и возможно ли это осуществить.