Redux Middleware и GraphQL - PullRequest
       79

Redux Middleware и GraphQL

1 голос
/ 04 октября 2019

Ладно. Насколько я понимаю, мы используем промежуточное программное обеспечение в избыточности для всех асинхронных вызовов теперь из документации Apollo мы можем напрямую использовать запросы и мутации внутри нашего компонента.

Лично я думал, что написание всей бизнес-логики в отдельном месте с использованием промежуточного программного обеспечения более интуитивно понятно, поскольку помогает отвести бизнес-логику от пользовательского интерфейса (где обмен данными может осуществляться с использованием избыточности)

Есть ли способ отделить бизнес-логику, используя промежуточное программное обеспечение для редуксов с GraphQL, вместо того, чтобы смешивать его в моем интерфейсе?

Точно так же, как fetch или axios в create-logger * redux-logic.

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Учитывая, что моя команда уже использует Graph / Apollo Client, мы недавно отошли от использования Redux и предпочитаем встроенное решение Apollo Client для управления локальным состоянием. Как отмечено в его документах:

Клиент Apollo (> = 2.5) имеет встроенные возможности обработки локальных состояний, которые позволяют хранить локальные данные в кэше Apollo вместе с удаленными данными. Чтобы получить доступ к вашим локальным данным, просто запросите их с помощью GraphQL. Вы даже можете запрашивать локальные и серверные данные в одном запросе!

В частности, используя директиву @client, вы отмечаете, что хотите получать данные поля локально, используя либо клиентский распознаватель для выполнения локальных запросов или мутаций или из кэша. Вы можете посмотреть документы здесь . Возможность использования этого единственного инструмента упростила наше местное управление состояниями. Что еще более важно, это решение могло бы удовлетворить ваш запрос на большее разделение между пользовательским интерфейсом и бизнес-логикой, поскольку эта логика должна быть в значительной степени инкапсулирована в средствах распознавания на стороне клиента, которые могут обрабатывать асинхронные запросы, включая запросы по сети.

0 голосов
/ 04 октября 2019

Есть ли способ отделить мою бизнес-логику, используя промежуточное программное обеспечение для редуксов с GraphQL, вместо того, чтобы смешивать его в моем пользовательском интерфейсе?

Этого можно добиться с помощью apollo-fetch с redux-saga , который является промежуточным программным обеспечением Redux.

Если необходимо извлечь данные, отправьте простое действие Redux синхронизации. Он перехватывается с помощью redux-saga, который может использовать Apollo для асинхронной выборки данных, может выполнять другие асинхронные действия в ответ в случае необходимости, а затем отправлять одно или несколько действий синхронизации в хранилище Redux.

Затем бизнес-логику можно разделить на асинхронные реду-сага-функции, называемые «саги», которые могут запускать другие саги для размещения более сложной логики и, наконец, отправлять действия в Redux, который остается основным «источником правды». 'в вашем приложении.

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