¿Por qué la tienda redux debería ser serializable?

Al leer el documento redux, encontré que el documento mencionaba esto:

Aún así, debe hacer todo lo posible para mantener el estado serializable. No coloque nada dentro que no pueda convertir fácilmente en JSON.

Entonces mi pregunta es, ¿cuál es el beneficio de mantener el estado serializable? O, ¿qué dificultades puedo tener si guardo datos no serializables?

Y creo que esto no es exclusivo de redux: Flux, incluso React local state sugiere lo mismo.

Aclararme aquí es un ejemplo. Supongamos que la estructura de la tienda es así.

{
    books: { 
        1: { id: 1, name: "Book 1", author_id: 4 }
    },
    authors: {
        4: { id: 4, name: "Author 4" }
    }
}

Todo esto debería verse bien. Sin embargo, cuando intento acceder a "el autor del Libro 1", tengo que escribir un código como este:

let book = store.getState().books[book_id];
let author = store.getState().authors[book.author_id];

Ahora, voy a definir una clase:

class Book {
    getAuthor() {
        return store.getState().authors[this.author_id];
    }
}

Y mi tienda será:

{
    books: {
        1: Book(id=1, name="Book 1")
    },
    ...
}

Para que pueda obtener el autor fácilmente usando:

let author = store.getState().books[book_id].getAuthor();

El segundo enfoque podría hacer que el objeto "libro" sea consciente de cómo recuperar los datos del autor, por lo que la persona que llama no necesita conocer la relación entre libros y autores. Entonces, ¿por qué no lo estamos usando, en lugar de mantener el "objeto simple" en la tienda como el enfoque n. ° 1?

Cualquier idea es apreciada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta