In un'applicazione basata su Redux, l'architettura ruota attorno a tre concetti principali: Redux store, actions e reducers. Approfondiamo ciascuno di questi concetti e vediamo come funzionano insieme.
Redux Store
Redux store è un'unica fonte di verità che contiene lo stato completo della tua applicazione. È essenzialmente un oggetto JavaScript che contiene i dati che rappresentano l'intero stato dell'applicazione. Puoi creare store utilizzando la createStore
funzione dalla libreria Redux.
Actions
Actions sono semplici oggetti JavaScript che descrivono qualcosa che è accaduto nell'applicazione. Contengono un type
campo che indica il tipo di azione eseguita e possono essere inclusi anche dati aggiuntivi. Actions vengono creati utilizzando i creatori di azioni, che sono funzioni che restituiscono oggetti azione. Per esempio:
// Action Types
const ADD_TODO = 'ADD_TODO';
// Action Creator
const addTodo =(text) => {
return {
type: ADD_TODO,
payload: text
};
};
Reducers
Reducers specificare come cambia lo stato dell'applicazione in risposta a actions. Un riduttore è una funzione pura che accetta lo stato corrente e un'azione come argomenti e restituisce un nuovo stato. Reducers vengono combinati in un unico riduttore di radice utilizzando la combineReducers
funzione. Ecco un semplice esempio:
// Reducer
const todosReducer =(state = [], action) => {
switch(action.type) {
case ADD_TODO:
return [...state, action.payload];
default:
return state;
}
};
// Combine Reducers
const rootReducer = combineReducers({
todos: todosReducer,
// ...other reducers
});
Lavorare insieme
Quando invii un'azione utilizzando la dispatch
funzione, Redux inoltra l'azione a tutti i file reducers. Ogni riduttore controlla se il tipo di azione corrisponde al proprio e aggiorna di conseguenza la parte rilevante dello stato. Lo stato aggiornato viene quindi archiviato in Redux store e tutti i componenti connessi vengono nuovamente renderizzati in base al nuovo stato.
Scenario di esempio
Immagina un'applicazione per l'elenco delle cose da fare. Quando un utente aggiunge una nuova cosa da fare, viene inviata un'azione con il tipo ADD_TODO
e il testo della cosa da fare come payload. Il riduttore di cose da fare riceve questa azione, aggiunge la nuova cosa da fare allo stato e restituisce lo stato aggiornato.
Conclusione
Comprendere come interagiscono Redux store, actions, e reducers è fondamentale per un'efficace gestione dello stato. Questa architettura garantisce una chiara separazione delle preoccupazioni e semplifica la gestione degli stati applicativi complessi. Man mano che continui a sviluppare con Redux, questi concetti costituiranno la base della tua strategia di gestione dello stato.