Po przeczytaniu redux doc I okazało się, że doc wspomniano to:Dlaczego sklep redux powinien być możliwy do serializacji?
Mimo to, należy zrobić wszystko, aby utrzymać stan serializacji. Nie wkładaj do środka żadnych przedmiotów, których nie można łatwo zmienić w JSON.
Moje pytanie brzmi: jaka jest korzyść z utrzymywania stanu z możliwością serializacji? Albo jakie mam trudności, jeśli umieszczę dane nie nadające się do serializacji w sklepie?
I wierzę, że nie jest to jedyne w przypadku redux - Flux, nawet React Local State sugerują to samo.
Aby mnie tu wyjaśnić, jest przykładem. Załóżmy, że struktura sklepu jest taka.
{
books: {
1: { id: 1, name: "Book 1", author_id: 4 }
},
authors: {
4: { id: 4, name: "Author 4" }
}
}
To wszystko powinno wyglądać dobrze. Jednak przy próbie dostępu „autor Księgi 1”, muszę napisać kod tak:
let book = store.getState().books[book_id];
let author = store.getState().authors[book.author_id];
Teraz idę do zdefiniowania klasy:
class Book {
getAuthor() {
return store.getState().authors[this.author_id];
}
}
A mój sklep będą:
{
books: {
1: Book(id=1, name="Book 1")
},
...
}
Tak, że mogę się z autorem łatwo za pomocą:
let author = store.getState().books[book_id].getAuthor();
Drugie podejście może uczynić obiekt "książki" świadomym, jak pobierać dane autora, więc osoba dzwoniąca nie musi znać relacji między książkami i autorami. Dlaczego nie używamy go, zamiast trzymać "czysty przedmiot" w sklepie tak jak podejście nr 1?
Wszelkie pomysły są mile widziane.
w JS można wykonywać wywołania ogólne/zastosować wywołania, więc takie defs nie muszą żyć w danych, a mimo to należy rozdzielić dane i logikę. utwórz kolejną warstwę abstrakcji, jeśli chcesz mieć przydatne przysmaki metodyczne. – dandavis