Redux, par défaut, ne prend en charge que le flux de données synchrone. Un composant conteneur ne peut pas appeler directement une API asynchrone, puis distribuer des actions en fonction de la réponse.
Le problème avec les appels directs d'API :
Dans une interface utilisateur comme celle décrite , avec un champ et un bouton, le composant conteneur tenterait d'effectuer les étapes suivantes :
<pre class="brush:php;toolbar:false"> class App extends React.Component { render() { return ( <div> <input value={this.props.field} /> <button onClick={this.props.update}>Fetch</button> {this.props.isWaiting && <div>Waiting...</div>} </div> ); } update = () => { AsyncApi.getFieldValue() // Perform async API call .then(result => this.props.dispatch({ // Dispatch action with result type: ActionTypes.UPDATED, payload: result })); } }
Cette approche est problématique car :
Middleware à la rescousse :
Un middleware comme Redux Thunk ou Redux Promise résout ces problèmes en fournissant un moyen structuré et cohérent d'effectuer un flux de données asynchrone. .
Redux Thunk :
Redux Thunk vous permet de distribuer des fonctions au lieu d'actions. Ces fonctions peuvent effectuer des tâches asynchrones et répartir des actions selon les besoins.
Promesse Redux :
La promesse Redux répartit automatiquement les actions en fonction du succès ou de l'échec d'une promesse donnée.
Avantages de Middleware :
En conclusion :
Alors que l'approche directe de l'async flow dans Redux est possible, il est généralement déconseillé en raison des inconvénients susmentionnés. Le middleware fournit une solution plus efficace et structurée pour gérer le flux de données asynchrones dans les applications Redux, conduisant à une amélioration de la qualité du code, de la maintenabilité et des capacités de débogage.
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!