Как лучше всего использовать Reactive State? - PullRequest
5 голосов
/ 24 октября 2019

У меня большой компонент, я храню всю информацию о выбранных предметах и ​​всю информацию в магазине (ngrx). В этом компоненте есть разные типы, и я могу переключаться между ними и изменять информацию о них (через входы). А затем, по нажатию кнопки сохранения, отправьте все изменения на сервер.

Каков наилучший способ поместить измененные данные в хранилище?

  • Отправить в хранилищево время события onchange (минус: много отправки)
  • Отправка при переключении между типами (минус: вам нужно как-то проверить состояние типа, который был изменен прямо сейчас, прежде чем нажимать кнопку сохранения)
  • Или, вообще, плохая практика - помещать элементы, которые будут меняться, и лучше хранить их для обслуживания?

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

1 Ответ

2 голосов
/ 24 октября 2019

Не зная варианта использования, трудно дать правильный ответ на этот вопрос, потому что все зависит от потребностей.

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

Минус отправки большого количества действий, не является "реальным" недостаткомimho - хранилище ngrx (в общем, redux) предназначено для обработки множества входящих действий.

Чтобы ответить на второй вопрос, да, это были редукторы для imho - именно здесь я ожидаю некоторой логики. См. redux docs для получения дополнительной информации.

Вы также можете поместить некоторую «логику просмотра» внутри селекторов, такую ​​как фильтрация, сортировка, разбиение на страницы, ...

Mikeи Брэндон выступил на конференции ng-conf, и они объясняют, что должно принадлежать государству, а что нет. Выступление дает полезную информацию, Уменьшение Boilerplate с NgRx

...