Io uso il redux con normalizr per normalizzare la risposta dal server, in pratica segui l'esempio real-world. In questo modo il riduttore entities
è molto semplice, basta unire la risposta. Il problema che ho adesso è una specie di operazione delete
. Ho trovato questo issue#21 of normalizr repo ma ancora non riuscivo a capire come risolvere questo. Ad esempio,Operazione Redux + Normalizr staccata (cancellata)
Stato attuale è
{
entities:
product_categories: {
...
13: {
...
products: ["1", "2"], <--------------- [i] Current state
...
}
},
products: {
1: {
id: "1"
}
}
}
La risposta normalizzato è
{
...
product_categories: {
...
13: {
...
products: ["1"], <---------------- [2] Normalized result
}
...
}
Come si può vedere, l'API di back-end appena restituisce tutti gli ID di prodotto che appartenevano a questa categoria, in questo caso "2" è staccato. Quando il riduttore 'entità' unisce questa risposta, "2" è ancora in agguato. Proprio ora ricarico la pagina, ma mi chiedo se c'è un modo migliore per gestire questo caso?
Nel riduttore entities
, è sufficiente unirlo come nell'esempio reale.
return merge({}, state, action.payload.entities);
Questa è una bella domanda. IMO indica un difetto sostanziale nell'intera architettura Redux + Normalizr. Certo, hai un'unica radice da dichiarare, ma non è esattamente una rappresentazione veritiera. Richiedere l'uso di delete flag è troppo supponente –