все на rxjs
реализуем канбан доску, с обновлением по сокетам
Есть менеджер состояний.
В упрощенном варианте все базируется на трех сущностях
funnel - воронка
stage - этап
deal - сделка
Рассмотрим 2 структуры (псевдо разметка). И в качестве примера задача: меняется значение color у сущности stage, информация об этом пришла по сокетам
1 вариант структуры
funnel$: Observable<T> = {
name: T,
...,
stages: T[] [{
name: T,
color: T,
...,
deals: T[] [{
name: T,
...
}]
}
}
в случае изменения цвета, находим stage по id, изменяем значение color, затем $
funnel.next($funnel.value)
данные на клиенте обновились.
2 вариант
funnel$: Observable<T> = {
name$: Observable<T>,
...,
stages$: Observable<T[]> [{
name$: Observable<T>,
color$: Observable<T>,
...,
deals$: Observable<T[]> [{
name$: Observable<>,
...
}]
}
}
в случае изменения цвета, находим stage по id, изменяем значение color, затем $funnel.value.stages$.value[index].value.$
color.next(color);
данные на клиенте тоже обновились
Вопросы
1) как вообще обычно делают такие штуки, может какой-то из способов вообще не приемлем?
2) на мой взгляд у каждого способа есть свои плюсы и минусы. Глобально в первой проще намного работать с данными внутри компонент, во втором намного меньше рендерятся компоненты, завязанные на данных.
3) подозреваю, что выбор зависит от бизнес-задач, как часто будут приходить сообщения об изменении данных.