Immaginare una situazione di gestione del modulo di invio che può restituire diversi errori: 400, 401, 500. Quando viene restituito 400, voglio mostrare un messaggio nella parte superiore del modulo (sovrascrivere il comportamento predefinito). Per altri codici di errore (non gestiti), deve essere richiamato il gestore di errori (globale) predefinito (che mostra il brindisi di notifica). Solo che non voglio duplicare questo codice per ogni singola azioneCome creare un gestore di errori globale in Redux e sovrascriverlo quando necessario?
ho spedizione azioni asincrone utilizzando Redux-thunk middleware
// Pseudo code
const action = (dispatch) => {
const onSuccess = (result) => dispatch({type: 'OPERATION_SUCCESS', payload: result});
const onError = (error) => dispatch({type: 'OPERATION_ERROR', error: true, payload: error});
return promise.then(onSuccess, onError);
};
dispatch(action);
posso creare un riduttore che gestisce tutti {errore: true} azioni e mostra alcune notifiche popup (probabilmente senza utilizzare lo stato di Redux, invocando direttamente qualche metodo toast.show()) Ma come determinare se questo errore speciale è già stato gestito da qualche altro riduttore?
Correggetemi se ho torto @DanAbramov, ma nella funzione di riduttore 'error', non è necessario prima controllare 'RESET_ERROR'? Ho appena provato questo e quando si tenta di ripristinare il messaggio di errore non succede nulla. Penso che questo sia dovuto al fatto che la prima condizione 'if' è vera perché' action.error' è chiaramente indefinito quando si resetta il messaggio di errore. – Jonathan