Я новичок в ngrx
и rxjs
, поэтому я думаю, что, вероятно, есть простое решение для этого, которое мне пока не очевидно: -)
У меня настроено и работает магазин ngrx со следующим состоянием:
У меня все действия и редукторы настроены нормально. Когда пользователь создает новое Сообщение, я отправляю действие MessageCreated
, в результате которого новое сообщение добавляется в мое хранилище (свойство массива объекта Thread), что, в свою очередь, обновляет мое представление. Ура!
Наблюдаемое для моего Thread
работает и теперь включает новое Сообщение:
thread$ = store.pipe(select(selectThreadWithMessages(id));
Моя проблема в том, что мне нужен способ обновить свойство вновь созданного сообщения (isNew = true
, чтобы анимация применялась в поле зрения). Но я не хочу просто применять это ко всем сообщениям. У меня это «работает», просто применяя его к последнему Message
в массиве (который всегда должен быть самым новым), но это не похоже на «правильный» путь.
Что если я захочу отреагировать на новый поступающий предмет, когда нет простого способа узнать, какой это?
Вот что я подумал сделать:
Может быть, изначально подписаться на хранилище, чтобы получить исходные данные, а также иметь поток Messages
, который добавляется в коллекцию ..? Похоже, что это может обойти цель магазина с самого начала ...
Может быть, вывести Messages
в собственное состояние функции и иметь отдельный селектор для этого? Но, возможно, это не очень поможет с моей первоначальной проблемой.
Полагаю, что в целом все сводится к тому, чтобы ссылаться на наблюдаемый набор Message[]
и правильно применять новые отдельные экземпляры Message
, которые появляются после загрузки представления.
Мне нравится идея реактивного программирования, но для меня это, очевидно, еще не вторая натура.
Любой совет, высоко ценится ..!