Используйте apollo-сервер в браузере - PullRequest
0 голосов
/ 06 ноября 2019

Я бы хотел использовать apollo-server в браузере на стороне клиента. Это возможно? Позвольте мне объяснить, почему я считаю, что это было бы здорово.

Я хочу, чтобы в моем приложении React был унифицированный и абстрактный API данных. И я хочу, чтобы этот API был GraphQL (не Redux, не пользовательские хуки / контексты, просто useQuery). Я хотел бы сделать что-то вроде этого:

  1. Создать "клиентскую схему", которая на самом деле представляет собой смесь серверной схемы и локального состояния.
  2. Пишите средства распознавания локально. Это ключ. Они могут просто использовать стандартный вызов API, но они также могут играть с локальным состоянием. Или и то и другое.

Я знаю, что есть возможность иметь локальное состояние в apollo-client (описано здесь: https://www.apollographql.com/docs/react/data/local-state/). Но в этом решении отсутствуют 2 вещи:

  1. Я не хочу использовать флаг @client в каждом локальном запросе или мутации. Это не имеет смысла, это не абстрактный API. Если пользовательский интерфейс вызывает query { products }, он не хочет знать, является ли он локальным илидля этого требуется некоторое действие сервера. Если он локальный, он будет всегда возвращать непустые data, а loading всегда будет равняться true. Благодаря этому я могу создать ориентированный на будущее пользовательский интерфейс, который выиграл 'не нужно менять, если я перенесу какую-то часть реализации с клиента на сервер или наоборот.
  2. Я не могу переопределить схему сервера. Поэтому, если в схеме сервера есть query { products }, я могу 'я не могу переопределить это локально, чтобы заставить его делать что-то еще (например, сделать некоторые дополнительные вещи с локальным состоянием).

Я бы хотел услышать, имеет ли моя идея смысл и возможно ли это осуществить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...