Неуверен в том, как создать хорошее поведение при редуксе - PullRequest
0 голосов
/ 28 мая 2018

У меня уже есть приложение AngularJS (1.6) , созданное с некоторыми компонентами.Само приложение является просто демонстрацией некоторых старых и уже существующих директив AngularJS .Я реализовал их внутри некоторых компонентов, чтобы просто напечатать их на интерфейсе пользователя.

В последнее время я изучаю Redux (я все еще новичок в этом) и хочу реализовать правильное поведение приведения во всем проекте.Насколько я понял, существует одно состояние приложения , где все данные неизменны и односторонне связаны вплоть до его компонентов, которые используют события, созданные его родителями.используя редукторы, воссоздайте состояние приложения и измените данные соответствующим образом.

Теперь моя проблема в том, что это уже существующие директивы , предназначенные для сами изменяют данные, они не запускают события.

Например, этот указатель даты:

Контейнерный компонент имеет этот код

<example-datepicker date="model.date"></example-datepicker>

Компонент Datepicker использует привязки этого контроллера

bindings: {
   date: '='
}

И этот шаблон , который буквально использует старую директиву, которую я упомянул

<date-picker date-model="model.date" name="dateForm"></date-picker>

Что ж, теперь директива datepicker отвечает только за отображение datepicker и за изменение модели всякий раз, когда при использовании выбирается дата.Теперь представьте, что в моем состоянии приложения есть эта строка «дата».Он должен быть неизменным , тогда директива не должна его менять, верно?

Должен ли я изменить директиву соответственно для такого поведения,если нет, как мне вызвать это в событие?Я думал об использовании функции $ onChanges компонента, но для этого требуется двусторонняя привязка , которая буквально меняет модель , и это меняетсостояние, которое должно быть неизменным .

Правильно ли я понял излишне, или это поведение State> Component> Directive , которое я пытаюсь использовать, просто невозможно с Redux?

Заранее спасибо

1 Ответ

0 голосов
/ 28 мая 2018

Прежде всего, вы можете попробовать ng-redux с его разъемом, подумайте, что это может упростить некоторые вещи.Кроме того, идея заключается в том, что вы должны отправлять действия из директив / компонентов для обновления хранилища, а хранилище уведомляет всех слушателей об изменениях (вы можете использовать метод подписки, который предоставляет redux).

Одна вещь, котораяТакже важно то, что вам не нужно хранить все данные в вашем хранилище избыточности, иногда наличие директив / компонентов с собственными данными (это могут быть данные с двусторонним связыванием) является более гибким для форм.В этом случае вам просто нужно отправить действие в определенное место.

А если вам нужно вызвать хук $ onChanges , вам просто нужно обновить ссылку на объект, который передается компоненту

...