Sto usando reactjs e l'architettura di flusso in un progetto su cui sto lavorando. Sono un po 'perplesso su come suddividere correttamente i dati nidificati nei negozi e perché dovrei suddividere i miei dati in più negozi.Perché utilizzare un negozio per entità nell'architettura dell'applicazione di flusso?
di spiegare il problema userò questo esempio:
immaginare un'applicazione Todo dove si hanno progetti. Ogni progetto ha compiti e ogni attività può avere note.
L'applicazione utilizza un API REST per recuperare i dati, restituendo la seguente risposta:
{
projects: [
{
id: 1,
name: "Action Required",
tasks: [
{
id: 1,
name: "Go grocery shopping",
notes: [
{
id: 1,
name: "Check shop 1"
},
{
id: 2,
name: "Also check shop 2"
}
]
}
]
},
]
}
L'interfaccia dell'applicazione fittizia visualizza un elenco di progetti a sinistra e quando si seleziona un progetto, quel progetto diventa attivo e i suoi compiti sono visualizzati sulla destra. Quando fai clic su un'attività, puoi vederne le note in un popup.
Quello che vorrei fare è utilizzare 1 negozio singolo, il "Project Store". Un'azione esegue la richiesta al server, recupera i dati e ordina al negozio di riempirsi con i nuovi dati. Il negozio salva internamente questo albero di entità (Progetti -> Attività -> Note).
Per poter mostrare e nascondere le attività in base al progetto selezionato, manterrei anche una variabile nello store, "activeProjectId". In base a ciò la vista può ottenere il progetto attivo, i suoi compiti e renderli.
Problema risolto.
Tuttavia, dopo aver cercato un po 'online per vedere se questa è una buona soluzione, vedo un sacco di persone che affermano che è necessario utilizzare un negozio separato per entità.
Ciò significherebbe: A ProjectStore, TaskStore e NoteStore. Per essere in grado di gestire le associazioni, ho anche bisogno di un "TasksByProjectStore" e un "NotesByTaskStore".
Qualcuno può spiegare perché questo sarebbe meglio? L'unica cosa che vedo è un sovraccarico nella gestione degli archivi e del flusso di dati.
Ho realizzato oggi che non ho mai commentato la tua risposta. Grazie, ho finito per utilizzare un singolo negozio perché l'applicazione non era molto complicata. – geoffreydv
Molto apprezzato. Prego. – wintvelt