Ho imparato React e Flux negli ultimi mesi, e una cosa che non ho ancora affrontato è la visualizzazione di messaggi di errore agli utenti. In particolare, i messaggi di errore che si verificano a seguito di una richiesta http ajax all'interno di un metodo di creazione di azioni di flusso.Come coordinare i messaggi di errore del server tra Flux e React?
Un semplice esempio è l'accesso dell'utente: se il segno in una richiesta Ajax non riesce a causa di una password errata, il server risponde con l'errore. In quel momento, all'interno del mio metodo di creazione di azioni di flusso, la mia unica opzione è quella di inviare un'azione contenente le informazioni di errore, giusto?
Posso inviare le informazioni di errore e mantenere questo errore in un negozio. Non sono sicuro di quale sia il modo migliore per legare determinati errori a determinati componenti. Diciamo che la mia struttura dei componenti reattiva sta visualizzando più componenti che riconoscono gli errori, ma si verifica un errore durante il tentativo di autenticazione dell'utente sul lato server e deve essere visualizzato su tale modulo di accesso.
Esiste un buon modello o una convenzione per archiviare gli errori e sapere a quale componente sono destinati? Esiste un modo programmatico per determinare ciò, invece di passare un identificatore ad ogni funzione di azione che identifica il componente che il creatore dell'azione è chiamato, ecc.?
Immaginate un'applicazione di tipo di foglio di calcolo, in cui ogni cella salva tramite ajax onblur. Se il salvataggio fallisce, l'utente dovrebbe vedere un messaggio di errore _nella cella che non è riuscito a salvare_. Ora hai potenzialmente un messaggio di errore per ogni cella. Stai salvando tutti quegli errori nel negozio stesso? Come stai mappando gli errori alle celle? Grazie per qualsiasi consiglio. – Jonah
Supponendo che le celle abbiano una sorta di ID (che devono comunque essere usati come 'chiave' per un rendering efficiente), mantenere la mappatura' errorsByID: {id -> error} 'nello store. –
Grazie per la risposta. Il problema che sto riscontrando con questa soluzione è che le mie chiavi non sono uniche a livello globale, ma solo uniche tra i loro fratelli (che è permesso). All'interno di una "riga" la chiave è solo l'indice della colonna. Ciò significa che ogni cella nella colonna mostrerebbe l'errore.Potrei usare "rowId + colIndex" per "id" in 'errorsById', ma anche _that_ break, ad es. Se volevo rendere due copie della stessa griglia sulla pagina. Quindi "identità" qui diventa un problema non banale. Passare un callback alla funzione ajax per onError che imposta lo stato del componente direttamente è una pratica terribile? – Jonah