Maison interface Web js tutoriel Utilisez réagir, redux, réagir-redux

Utilisez réagir, redux, réagir-redux

Jun 08, 2018 pm 03:03 PM
react redux 关系

Cette fois, je vais vous présenter les précautions d'utilisation de React, Redux et React-Redux. Ce qui suit est un cas pratique.

Cet article présente la relation entre React, Redux et React-Redux. Partagez-le avec tout le monde et laissez une note pour vous-même :

React

Quelques petits Pour le projet, utiliser uniquement React est suffisant pour la gestion des données. Alors, quand devez-vous introduire Redux ? Lorsque les données pour le rendu d'un composant sont obtenues à partir du composant parent via des accessoires, elles sont généralement A --> B, mais à mesure que la complexité métier augmente, cela peut ressembler à ceci : A --> B -- > > D --> E, les données requises par E doivent être transmises de A via les accessoires, et le E --> Le composant BCD n'a pas besoin de ces données, mais il faut les transmettre, ce qui est en effet un peu désagréable, et les accessoires et rappels passés affecteront également la réutilisation du composant BCD. Ou si des composants frères souhaitent partager certaines données, il n'est pas très pratique de les transférer ou de les obtenir. Dans des situations comme celle-ci, il est nécessaire d’introduire Redux.

En fait, A ---> B ---> C ---> D ---> Dans ce cas, React peut obtenir les données sans passer d'accessoires couche par couche. . Le React-Redux qui sera discuté plus tard utilise Context pour permettre à chaque sous-composant d'obtenir les données dans le magasin.

Redux

En fait, nous voulons juste trouver un endroit pour stocker certaines données partagées. Tout le monde peut les récupérer et les modifier, c'est tout. Est-il acceptable de le mettre dans une seule variable ? Oui, bien sûr, cela fonctionne, mais c'est trop inélégant et dangereux car il s'agit d'une variable globale et peut être consultée et modifiée par n'importe qui. Elle peut être accidentellement écrasée par un ami. Si les variables globales ne fonctionnent pas, utilisez simplement des variables privées. Les variables privées ne peuvent pas être modifiées facilement. Pensez-vous immédiatement aux fermetures...

Maintenant, nous devons écrire une telle fonction, qui satisfait :

  1. Stocke un objet de données

  2. Le monde extérieur peut accéder à ces données

  3. Le monde extérieur peut également modifier ces données

  4. Avertir les abonnés lorsque les données changent

function createStore(reducer, initialState) {
 // currentState就是那个数据
 let currentState = initialState;
 let listener = () => {};
 function getState() {
 return currentState;
 }
 function dispatch(action) {
 currentState = reducer(currentState, action); // 更新数据
 listener(); // 执行订阅函数
 return action;
 }
 function subscribe(newListener) {
 listener = newListener;
 // 取消订阅函数
 return function unsubscribe() {
  listener = () => {};
 };
 }
 return {
 getState,
 dispatch,
 subscribe
 };
}
const store = createStore(reducer);
store.getState(); // 获取数据
store.dispatch({type: 'ADD_TODO'}); // 更新数据
store.subscribe(() => {/* update UI */}); // 注册订阅函数
Copier après la connexion
Étapes pour mettre à jour les données :

  1. Quoi : Que voulez-vous faire --- dispatch(action)

  2. Comment : Comment le faire, le résultat de le faire --- réducteur(oldState, action) = > newState

  3. Alors ? : réexécutez la fonction d'abonnement (telle que le nouveau rendu de l'interface utilisateur, etc.)

Cela implémente un magasin et fournit un centre de stockage de données pouvant être utilisé en externe Accès, modification, etc., telle est l'idée principale de Redux. Par conséquent, Redux n'a aucune relation essentielle avec React et peut être utilisé normalement en combinaison avec d'autres bibliothèques. C'est juste que la méthode de gestion des données de Redux est très cohérente avec le concept de vue basée sur les données de React. La combinaison des deux rend le développement très pratique.

Maintenant que nous disposons d'un endroit sûr pour accéder aux données, comment pouvons-nous les intégrer dans React ? Nous pouvons créer un window.store = createStore(reducer) lorsque l'application est initialisée, puis obtenir des données via store.getState() si nécessaire, mettre à jour les données via store.dispatch et nous abonner aux modifications de données via store.subscribe. effectuer setState... Si vous faites cela à de nombreux endroits, ce sera vraiment écrasant, et cela n'évitera toujours pas l'inélégance des variables globales.

React-Redux

Étant donné que les variables globales présentent de nombreuses lacunes, changeons d'idée et intégrons le magasin directement dans les accessoires de niveau supérieur de l'application React, à condition que chaque sous-composant puisse accédez aux accessoires de niveau supérieur. , par exemple :

<TopWrapComponent store={store}>
 <App />
</TopWrapComponent>,
Copier après la connexion
React fournit simplement un tel hook, Context, et son utilisation est très simple. Jetez un œil à la démo officielle pour comprendre. Maintenant que chaque sous-composant peut facilement accéder au magasin, l'étape suivante consiste pour le sous-composant à extraire les données utilisées dans le magasin, à les modifier et à s'abonner pour mettre à jour l'interface utilisateur, etc. Chaque sous-composant doit refaire cette opération. Évidemment, il doit exister un moyen plus pratique : des composants d'ordre supérieur. En encapsulant store.getState(), store.dispatch et store.subscribe via des composants d'ordre élevé, les sous-composants n'ont aucune connaissance du magasin. Les sous-composants utilisent normalement des accessoires pour obtenir des données et des rappels pour déclencher des rappels, ce qui équivaut au. existence d'aucun magasin.

Ce qui suit est une implémentation approximative de ce composant d'ordre élevé :

function connect(mapStateToProps, mapDispatchToProps) {
 return function(WrappedComponent) {
 class Connect extends React.Component {
  componentDidMount() {
  // 组件加载完成后订阅store变化,如果store有变化则更新UI
  this.unsubscribe = this.context.store.subscribe(this.handleStoreChange.bind(this));
  }
  componentWillUnmount() {
  // 组件销毁后,取消订阅事件
  this.unsubscribe();
  }
  handleStoreChange() {
  // 更新UI
  this.forceUpdate();
  }
  render() {
  return (
   <WrappedComponent
   {...this.props}
   {...mapStateToProps(this.context.store.getState())} // 参数是store里面的数据
   {...mapDispatchToProps(this.context.store.dispatch)} // 参数是store.dispatch
   />
  );
  }
 }
 Connect.contextTypes = {
  store: PropTypes.object
 };
 return Connect;
 };
}
Copier après la connexion
Lors de l'utilisation de connect, nous savons écrire du code passe-partout, tel que les deux fonctions mapStateToProps et mapDispatchToProps :

const mapStateToProps = state => {
 return {
 count: state.count
 };
};
const mapDispatchToProps = dispatch => {
 return {
 dispatch
 };
};
export default connect(mapStateToProps, mapDispatchToProps)(Child);
// 上述代码执行之后,可以看到connect函数里面的
 <WrappedComponent
 {...this.props}
 {...mapStateToProps(this.context.store.getState())}
 {...mapDispatchToProps(this.context.store.dispatch)}
 />
// 就变成了
 <WrappedComponent
 {...this.props}
 {count: store.getState().count}
 {dispatch: store.dispatch}
 />
// 这样,子组件Child的props里面就多了count和dispatch两个属性
// count可以用来渲染UI,dispatch可以用来触发回调
Copier après la connexion

So,这样就OK了?OK了。 通过一个闭包生成一个数据中心store,然后把这个store绑定到React的顶层props里面,子组件通过HOC建立与顶层props.store的联系,进而获取数据、修改数据、更新UI。 这里主要讲了一下三者怎么窜在一起的,如果想了解更高级的功能,比如redux中间件、reducer拆分、connect的其他参数等,可以去看一下对应的源码。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

怎样做出鼠标点击处心形图案漂浮

JS操作JSON数组去重

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer une application de chat en temps réel avec React et WebSocket Comment créer une application de chat en temps réel avec React et WebSocket Sep 26, 2023 pm 07:46 PM

Comment créer une application de chat en temps réel à l'aide de React et WebSocket Introduction : Avec le développement rapide d'Internet, la communication en temps réel a attiré de plus en plus d'attention. Les applications de chat en direct font désormais partie intégrante de la vie sociale et professionnelle moderne. Cet article expliquera comment créer une application simple de chat en temps réel à l'aide de React et WebSocket, et fournira des exemples de code spécifiques. 1. Préparation technique Avant de commencer à créer une application de chat en temps réel, nous devons préparer les technologies et outils suivants : React : un pour la construction

Guide pour la séparation du front-end et du back-end de React : Comment réaliser le découplage et le déploiement indépendant du front-end et du back-end Guide pour la séparation du front-end et du back-end de React : Comment réaliser le découplage et le déploiement indépendant du front-end et du back-end Sep 28, 2023 am 10:48 AM

Guide de séparation front-end et back-end de React : Comment réaliser un découplage front-end et back-end et un déploiement indépendant, des exemples de code spécifiques sont nécessaires Dans l'environnement de développement Web actuel, la séparation front-end et back-end est devenue une tendance. En séparant le code front-end et back-end, le travail de développement peut être rendu plus flexible, plus efficace et faciliter la collaboration en équipe. Cet article expliquera comment utiliser React pour réaliser une séparation front-end et back-end, atteignant ainsi les objectifs de découplage et de déploiement indépendant. Tout d’abord, nous devons comprendre ce qu’est la séparation front-end et back-end. Dans le modèle de développement Web traditionnel, le front-end et le back-end sont couplés

Comment créer des applications Web simples et faciles à utiliser avec React et Flask Comment créer des applications Web simples et faciles à utiliser avec React et Flask Sep 27, 2023 am 11:09 AM

Comment utiliser React et Flask pour créer des applications Web simples et faciles à utiliser Introduction : Avec le développement d'Internet, les besoins des applications Web deviennent de plus en plus diversifiés et complexes. Afin de répondre aux exigences des utilisateurs en matière de facilité d'utilisation et de performances, il devient de plus en plus important d'utiliser des piles technologiques modernes pour créer des applications réseau. React et Flask sont deux frameworks très populaires pour le développement front-end et back-end, et ils fonctionnent bien ensemble pour créer des applications Web simples et faciles à utiliser. Cet article détaillera comment exploiter React et Flask

Comment créer une application de messagerie fiable avec React et RabbitMQ Comment créer une application de messagerie fiable avec React et RabbitMQ Sep 28, 2023 pm 08:24 PM

Comment créer une application de messagerie fiable avec React et RabbitMQ Introduction : Les applications modernes doivent prendre en charge une messagerie fiable pour obtenir des fonctionnalités telles que les mises à jour en temps réel et la synchronisation des données. React est une bibliothèque JavaScript populaire pour créer des interfaces utilisateur, tandis que RabbitMQ est un middleware de messagerie fiable. Cet article explique comment combiner React et RabbitMQ pour créer une application de messagerie fiable et fournit des exemples de code spécifiques. Présentation de RabbitMQ :

Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Sep 29, 2023 pm 05:45 PM

Guide de l'utilisateur de ReactRouter : Comment implémenter le contrôle du routage frontal Avec la popularité des applications monopage, le routage frontal est devenu un élément important qui ne peut être ignoré. En tant que bibliothèque de routage la plus populaire de l'écosystème React, ReactRouter fournit des fonctions riches et des API faciles à utiliser, rendant la mise en œuvre du routage frontal très simple et flexible. Cet article expliquera comment utiliser ReactRouter et fournira quelques exemples de code spécifiques. Pour installer ReactRouter en premier, nous avons besoin

Comment créer une application d'analyse de données rapide à l'aide de React et Google BigQuery Comment créer une application d'analyse de données rapide à l'aide de React et Google BigQuery Sep 26, 2023 pm 06:12 PM

Comment utiliser React et Google BigQuery pour créer des applications d'analyse de données rapides Introduction : À l'ère actuelle d'explosion de l'information, l'analyse des données est devenue un maillon indispensable dans diverses industries. Parmi eux, créer des applications d’analyse de données rapides et efficaces est devenu l’objectif poursuivi par de nombreuses entreprises et particuliers. Cet article explique comment utiliser React et Google BigQuery pour créer une application d'analyse rapide des données et fournit des exemples de code détaillés. 1. Présentation React est un outil pour créer

Comment créer des applications de traitement de données en temps réel à l'aide de React et Apache Kafka Comment créer des applications de traitement de données en temps réel à l'aide de React et Apache Kafka Sep 27, 2023 pm 02:25 PM

Comment utiliser React et Apache Kafka pour créer des applications de traitement de données en temps réel Introduction : Avec l'essor du Big Data et du traitement de données en temps réel, la création d'applications de traitement de données en temps réel est devenue la priorité de nombreux développeurs. La combinaison de React, un framework front-end populaire, et d'Apache Kafka, un système de messagerie distribué hautes performances, peut nous aider à créer des applications de traitement de données en temps réel. Cet article expliquera comment utiliser React et Apache Kafka pour créer des applications de traitement de données en temps réel, et

PHP, Vue et React : Comment choisir le framework front-end le plus adapté ? PHP, Vue et React : Comment choisir le framework front-end le plus adapté ? Mar 15, 2024 pm 05:48 PM

PHP, Vue et React : Comment choisir le framework front-end le plus adapté ? Avec le développement continu de la technologie Internet, les frameworks front-end jouent un rôle essentiel dans le développement Web. PHP, Vue et React sont trois frameworks front-end représentatifs, chacun avec ses propres caractéristiques et avantages. Lorsqu'ils choisissent le framework front-end à utiliser, les développeurs doivent prendre une décision éclairée en fonction des besoins du projet, des compétences de l'équipe et des préférences personnelles. Cet article comparera les caractéristiques et les usages des trois frameworks front-end PHP, Vue et React.

See all articles