Trochę utknąłem, myśląc o tym, jak zaimplementować reduktor, w którym jego jednostki mogą mieć dzieci tego samego typu.Jak obsługiwać obiekty w kształcie drzewa w reduktorach Redux?
Weźmy przykładowe uwagi reddit: każdy komentarz może zawierać komentarze potomne, które mogą same mieć komentarze. Dla uproszczenia komentarz jest rekordem typu {id, pageId, value, children}, z pageId being strona reddit.
Jak można modelować reduktor wokół tego? Myślałem o tym, że reduktor jest mapą -> id komentarzy, które można filtrować według stron za pomocą strony id.
Problem polega na tym, że na przykład, gdy chcemy dodać komentarz do zagnieżdżonego: musimy utworzyć rekord w katalogu głównym mapy, a następnie dodać jego identyfikator do właściwości rodzica podrzędnego.Aby wyświetlić wszystkie komentarze musielibyśmy uzyskać wszystkie z nich, odfiltrować te, które mamy na górze (które zostałyby zachowane w reduktorach strony, jak na przykład uporządkowaną listę), a następnie iterować je, pobierając z obiektów komentarzy, gdy napotykamy dzieci używające rekurencja.
Czy istnieje lepsze podejście niż to, czy jest wadliwe?
Myślę, że możesz spróbować normalizr: https://github.com/gaearon/normalizr Nie użyłem go sam, więc nie jestem pewien, czy to ci pomoże w twoim przypadku. – Simon
Wiem o normalizatorze, bardziej zastanawiam się, czy istnieje "akceptowane" rozwiązanie, jak sobie z nim radzić w komponentach. Jeśli nie podłączysz() każdego komentarza, będziesz musiał zrobić odwrotność normalizatora przy każdej zmianie, a nawet jeśli połączysz to wygląda trochę jak bałagan –