Я немного задумался о том, как реализовать редуктор, где его сущности могут иметь дочерние объекты того же типа.
В качестве примера возьмем комментарии reddit: каждый комментарий может содержать комментарии пользователя, которые могут иметь собственные комментарии и т.д. Для упрощения, комментарий представляет собой запись типа {id, pageId, value, children}, при этом pageId является страницей reddit.
Как можно моделировать редуктор вокруг этого? Я думал о том, что редуктор представляет собой карту → идентификатор комментариев, где вы можете фильтровать страницу с помощью pageId.
Проблема в том, что, например, когда мы хотим добавить комментарий к вложенному: нам нужно создать запись в корневой части карты, а затем добавить свой идентификатор в родительское дочернее свойство. Чтобы отобразить все комментарии, мы 'd нужно получить все из них, отфильтровать те, что мы наверху (которые будут храниться в редукторах страниц, например, упорядоченный список), а затем повторять их, извлекать из объектов комментариев, когда мы сталкиваемся с детьми, использующими рекурсию.
Есть ли лучший подход, чем этот, или он ошибочен?