Les actions redux sont des objets JavaScript simples qui représentent une intention de modifier l'état de l'application. Ils sont le seul moyen de déclencher des changements dans un magasin Redux. Une action contient généralement un champ type
qui indique le type d'action effectué, ainsi que toutes les autres données pertinentes (souvent appelées payload
).
Pour expédier une action, vous utilisez la fonction dispatch
fournie par le magasin Redux. Le processus peut être décomposé dans les étapes suivantes:
type
approprié et toute payload
nécessaire.dispatch
, passant dans l'objet Action. Cela envoie l'action au magasin Redux, qui le passera ensuite par le réducteur pour mettre à jour l'état.Voici un exemple de base:
<code class="javascript">// Action Creator function incrementCounter() { return { type: 'INCREMENT_COUNTER', payload: 1 }; } // Dispatching the action store.dispatch(incrementCounter());</code>
Dans cet exemple, incrementCounter
est un créateur d'action qui renvoie un objet d'action. L'action est ensuite envoyée au magasin à l'aide de store.dispatch
.
La structure d'une action Redux est simple mais importante à comprendre. Un objet d'action redux typique a la structure suivante:
Voici un exemple d'une structure d'action typique:
<code class="javascript">{ type: 'ADD_TODO', payload: { id: 1, text: 'Learn Redux' }, error: false, meta: { timestamp: new Date().getTime() } }</code>
Redux Thunk est un middleware qui vous permet d'écrire des créateurs d'action qui renvoient des fonctions au lieu d'objets d'action. Ces fonctions peuvent avoir des effets secondaires, tels que la création d'appels API asynchrones, et peuvent expédier plusieurs actions au fil du temps.
Voici comment vous pouvez utiliser Redux Thunk pour expédier des actions asynchrones:
Installez Redux Thunk : Tout d'abord, vous devez installer Redux Thunk.
<code class="bash">npm install redux-thunk</code>
Configurez Redux Thunk : incluez Redux Thunk dans le middleware de votre magasin.
<code class="javascript">import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; import rootReducer from './reducers'; const store = createStore(rootReducer, applyMiddleware(thunk));</code>
Créez un créateur d'action asynchrone : écrivez un créateur d'action qui renvoie une fonction. Cette fonction peut expédier des actions et utiliser setTimeout
, fetch
ou d'autres opérations asynchrones.
<code class="javascript">function fetchTodos() { return async (dispatch) => { dispatch({ type: 'FETCH_TODOS_REQUEST' }); try { const response = await fetch('https://example.com/api/todos'); const data = await response.json(); dispatch({ type: 'FETCH_TODOS_SUCCESS', payload: data }); } catch (error) { dispatch({ type: 'FETCH_TODOS_FAILURE', error: error.message }); } }; }</code>
Envoyez l'action asynchrone : vous pouvez désormais expédier l'action asynchrone comme une action régulière.
<code class="javascript">store.dispatch(fetchTodos());</code>
Dans cet exemple, fetchTodos
est un créateur d'action asynchrone qui dépasse différentes actions à différentes étapes d'une opération asynchrone.
La gestion efficace des types d'action dans Redux est cruciale pour maintenir une application évolutive et maintenable. Voici quelques meilleures pratiques:
Utilisez des constantes pour les types d'action : Définissez les types d'action comme des constantes dans un fichier séparé. Cela aide à prévenir les fautes de frappe et facilite le maintien des types d'action à travers l'application.
<code class="javascript">// actionTypes.js export const INCREMENT_COUNTER = 'INCREMENT_COUNTER'; export const DECREMENT_COUNTER = 'DECREMENT_COUNTER';</code>
Organisez des types d'action par domaine : types d'action de groupe par le domaine auquel ils appartiennent. Cela aide à gérer un grand nombre de types d'action.
<code class="javascript">// counterActionTypes.js export const INCREMENT_COUNTER = 'INCREMENT_COUNTER'; export const DECREMENT_COUNTER = 'DECREMENT_COUNTER'; // userActionTypes.js export const LOGIN_USER = 'LOGIN_USER'; export const LOGOUT_USER = 'LOGOUT_USER';</code>
Utilisez des créateurs d'action : utilisez des créateurs d'action pour générer des actions. Cela réduit les risques d'erreurs et rend le code plus réutilisable.
<code class="javascript">// actions.js import { INCREMENT_COUNTER } from './actionTypes'; export function incrementCounter() { return { type: INCREMENT_COUNTER, payload: 1 }; }</code>
type
et peuvent avoir une payload
, error
ou un champ meta
.En suivant ces meilleures pratiques, vous pouvez gérer efficacement les types d'action dans Redux, ce qui entraîne un code plus propre et plus maintenable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!