Рубрики
Без рубрики

Добавление антикоррупционных слоев в ваше веб-приложение

Если асинхронные данные, которые вы получаете, трудно работать или нуждается в дезинфекции, рассмотрите возможность добавления антикоррупционного слоя

Автор оригинала: Jesse Langford.

Я использовал антикоррупционные слои в моем реакцию + приложения Redux сейчас. Это полезный рисунок дизайна, когда асинхронные данные ваши получателя трудно работать или нуждаются в некоторых санитарии, прежде чем выпустить его в состояние вашего приложения.

Что такое антикоррупционный слой?

Антикоррупционный слой представляет собой слой между различными подсистемами, которые не делятся одной и той же семантикой.

Для меня эти слои – это функции, которые усиливают или преобразуют данные, прежде чем он вступает в мое глобальное состояние, или сразу после того, как он уходит.

Я буду продемонстрировать несколько простых примеров того, как я использовал антикоррупционные слои, чтобы сделать глобальное государственное управление немного легче на себе.

Улучшение данных

Допустим, вы ожидаете получить запись пользователя структурированной, как это

пример

И вам нужно построить страницу, которая выглядит так

Снимок экрана 2021-04-10 на 5.55.02 PM.PNG

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

Я добавлю три новых значения, чтобы сделать рендуринг UI проще.

пример

Теперь мне нужно добавить две функции, которые берет IUSER и возвращает мою IUSTERSTATE.

пример

Другой берет IUSTERSTATE и возвращает Iuser.

пример

Я буду использовать эти две функции непосредственно перед тем, как пользователь вступает в мое приложение, и незадолго до его отправки на мой бэкэнд.

пример

Теперь у меня есть антикоррупционный слой для ELP, облегчит создание моего интерфейса.

Преобразование данных

Для одного объекта распространена в многочисленных компонентах.

В пользовательском объекте, определенном ранее, есть дополнительное поле, называемое billinginfo. В большинстве случаев я бы разделите информацию о выставлении выплаты пользователя в другой компонент. В этом случае я назначу выставляя свой собственный кусок в моем состоянии.

На этот раз я сделаю две функции, которые разделяют BillingInfo от пользователя, а другой, который добавляет его обратно.

Это модели, с которыми я буду работать с:

пример

Мне нужны две функции для преобразования

пример

И, наконец, мы добавляем функции в том же месте, что и раньше

пример

С этим на месте мое состояние более близко напоминает вид на пользовательские интерфейсы, которые я строю.