) Aujourdrsquohui, nous apprendrons comment mettre en oeuvre correctement et mieux la gestion de lrsquoétat. Mais tout d’abord, je voudrais me concentrer sur un exemple plus complexe: étendons notre application pour qu’elle puisse avoir plusieurs compteurs en même temps et apprenons comment gérer tous les compteurs en utilisant WordPress store. Le résultat final (que nous allons mettre en œuvre dans le prochain article) est similaire à:
Implémenter plusieurs compteurs en utilisant les composants REACT et le stockage WordPress basé sur Redux. Définissez lrsquoétat de notre application lorsque travaillez avec ce type de problème, devriez drsquoabord réfléchir à la façon dont gérez lrsquoétat de votre application. De plus, en supposant que ne puissiez lire et écrire lrsquoétat qursquoen utilisant des fonctions, la façon la plus simple est de considérer son API: une fonction qui permet drsquointerroger et de mettre à jour lrsquoétat. Dans notre exemple, je pourrais suggérer: ajouter un nouveau compteur Clear Counter x set Counter value x obtenir une liste de tous les compteurs dans lrsquoapplication obtenir Counter value X, mais pourriez avoir besoin drsquoutiliser une méthode différente (par exemple, pourriez avoir besoin de créer une fonction pour augmenter un compteur et créer une autre fonction pour le réduire).
Une fois cette interface définie, devriez envisager les informations nécessaires pour suivre cet état, en particulier la structure de données à utiliser. Dans notre exemple, nous voulons tracer plusieurs compteurs et, pour chaque compteur X, nous voulons connaître leurs valeurs. Quelles structures de données peuvent nous aider dans cette entreprise? Selon ce que X est, devrez peut être utiliser une ou une autre structure de données. Par exemple, si X est un index de compteur (c. à D. que voulez pouvoir récupérer les valeurs du premier, du deuxième ou du troisième compteur), la matrice numérique peut être suffisante. voulez que X soit un identificateur de compteur unique, pouvez utiliser
Une autre approche. Par exemple, voudrez peut être utiliser un dictionnaire avec une paire ID Value:
Compteur constant = {ae13a: 0, f18bb: 3, e889a: 1, 8b1d3: 5,} Ou tableau drsquoobjets: compteur constant = [{id: lsquoae13arsquo, valeur: 0}, {id: lsquof18bbrsquo, valeur: 3}, {id: lsquoe889arsquo, valeur: 1}, {id: lsquo8b1d3rsquo, valeur: 5}]] définissez drsquoabord lrsquointerface (Setter et getter, si voulez) pour manipuler et accéder à lrsquoétat de lrsquoapplication, alors la façon dont lrsquoétat lui même est mis en œuvre est une boîte noire. Cela signifie que pouvez modifier le stockage lui même à tout moment, et tant que maintenez lrsquoAPI, les choses se déroulent comme prévu. La création d’un module de données WordPress basé sur Redux avec WordPress permet de définir un ou plusieurs magasins pour gérer l’état de votre application. Pour créer un nouveau stockage en utilisant ce paquet, il suffit drsquoutiliser la fonctionnalité registerstore dans les sujets suivants:
Un nom qui identifie de façon unique votre stockage un sélecteur drsquoobjets et tous les getters récupèrent les données de lrsquoarchive un objet drsquoaction a la capacité drsquoactiver les demandes de mise à jour (nous en discuterons plus loin dans cet article) une fonction de réduction est responsable de mettre à jour lrsquoétat lorsque certaines actions sont activées nous montre un exemple réel, nrsquoest ce pas? Continuez avec lrsquoexemple de la semaine dernière et créez un nouveau dossier de stockage dans SRC. Puis créez un fichier index. JS inside, Code comme suit: Import {registerstore} from
Comme notre magasin pour srsquoassurer qursquoil est unique: nous combinons le nom du plugin (exemple de REACT) avec le mot (compteur) qui définit le magasin. Du calme!
Fonctionnement en magasin en principe, chaque magasin a besoin drsquoun ensemble de fonctions qui nous permettent de changer son statut. Dans notre exemple, le partage se trouve dans src store actions. В: fonction drsquoexportation addcounter (counterid) {renvoie {type: lsquoadd _ Counterrsquo, counterid,}} Export Function removecounter (counterid) {return {type: lsquoremove _ Counterrsquo, counterid,}} Exporter la fonction setcountervalue (counterid, value) {renvoie {type: lsquoSet _ Counter Valuersquo, counterid, value,}} Comme prévu, notre magasin dispose de trois actions pour mettre à jour son statut:
Addcounter: ajouter de nouveaux compteurs à notre magasin. Le seul paramètre requis est lrsquoID du nouveau compteur. Removecounter: supprime la fonction drsquoun compteur existant. De même, le seul paramètre dont nous avons besoin est lrsquoID du compteur à supprimer. Setcountervalue: fonction qui définit une nouvelle valeur sur un compteur donné. Apparemment, cette fonction prend deux arguments: lrsquoID du compteur à mettre à jour et sa nouvelle valeur. Maintenant, si regardez attentivement chaque action, pourriez être surpris: aucune de ces actions ne semble mettre à jour quoi que ce soit. Au lieu de cela, ils retournent les articles. Qursquoest ce qui se passe ici?
Dans Redux (le stockage WordPress est basé sur Redux), l’opération ne modifie pas directement le stockage. Au lieu de cela, ils génèrent un objet qui signale une demande de mise à jour. Ces demandes suivent toujours le même schéma: il srsquoagit drsquoun objet avec des propriétés de type qui identifient de façon unique la demande, ainsi que toutes les autres propriétés nécessaires pour appliquer correctement la mise à jour demandée. Voyons comment mettre à jour lrsquoétat Mise en œuvre du réducteur pour la mise à jour
Shopping lrsquoaction du magasin nrsquoest qursquoune demande de mise à jour, nous avons besoin de quelqursquoun ou quelque chose pour réellement mettre à jour lrsquoétat du magasin lors de lrsquoenvoi de la demande. Crsquoest ce que fait le réducteur.
Reducer est une fonction qui détecte lrsquoétat actuel de lrsquoapplication et les actions envoyées par quelqursquoun, et met à jour lrsquoétat en appliquant les mises à jour requises. Dans la section précédente, nous avons vu que notre stockage comporte trois opérations, de sorte que notre réducteur doit pouvoir les appliquer: importer {omit} à partir de
Interrogez le. Il suffit de définir un sélecteur. Js avec la fonction de requête souhaitée: Export Function getcounterid (State) {return object.key (State)} Export Function getcountervalue (State, counterid) {return Status [counterid]} Crsquoest tout! Crsquoest évident, non? Un sélecteur de stockage est une fonction qui accepte (au moins) un paramètre (état de stockage) et renvoie une valeur spécifique. Bien sûr, le sélecteur peut avoir plusieurs paramètres si devez retourner une valeur spécifique du stockage. Par exemple, dans notre exemple, nous avons créé deux sélecteurs: getcounterid renvoie un tableau drsquoidentificateurs de compteur. Parce que nous implémentons le stockage à lrsquoaide drsquoun dictionnaire objet, nous ne sommes intéressés que par le retour de son objet. Les clés. Getcountervalue renvoie une valeur spécifique pour un compteur donné. Cette fonction prend deux paramètres (lrsquoétat actuel de lrsquoapplication et lrsquoID du compteur qui nous intéresse) et renvoie la valeur souhaitée. Comment tester notre stockage pour vérifier qursquoil fonctionne, ouvrez le fichier src index. JS and Import: Import Dependencies Import {render} from
Vous permet de visualiser correctement les outils stockés par Redux: Les extensions Redux devtools de Firefox et Chrome permettent de vérifier facilement lrsquoétat du magasin Redux. En fait, le post drsquoaujourdrsquohui est un peu plus long que prévu, donc nous ne voyons pas encore comment utiliser ce magasin pour améliorer notre interface utilisateur. Mais j’espère que cette explication aidera à comprendre comment fonctionne le stockage WordPress et comment les utiliser pour gérer l’état des plug ins. La semaine prochaine, nous reprendrons lrsquoexemple drsquoaujourdrsquohui et nous connecterons notre composant React au magasin afin a) que ce que nous voyons dans lrsquointerface utilisateur soit basé sur lrsquoétat stocké dans le magasin, et b) que lrsquointeraction utilisateur interface utilisateur mette à jour le magasin (et lrsquointerface utilisateur elle même). Mais pour assurer que êtes satisfait de ce que jrsquoai montré aujourdrsquohui, permettez moi de proposer quelques tâches: Modifier le stockage que nous implémentons aujourdrsquohui pour stocker les données comme suit: compteur constant = [{id: lsquoae13arsquo, valeur: 0}, {id: lsquof18bbrsquo, valeur: 3}, {id: lsquoe889arsquo, valeur: 1}, {id: lsquo8b1d3rsquo, valeur: 5}] Il nrsquoa plus de dictionnaire. Nrsquooubliez pas que devrez peut être mettre à jour le sélecteur, le fonctionnement et le réducteur pour qursquoils fonctionnent correctement! La semaine prochaine, je partagerai des photos drsquoAnnie theby sur unsplash.
React introduction, Part 3