Une application a N STRY> Nombre de Par souci de ce contexte, chaque compteur représente le temps qu'un joueur a
pris pour jouer à son tour dans un jeu avec un nombre dynamique de joueurs. P> Il est nécessaire également, lors de la modification d'un tour d'un joueur, mettez en pause tous les horaires des autres joueurs, et lorsque vous redémarrez le jeu, tous les minuteries devrait être redémarré à leur état initial ( (J'utilise le Ducks modèle de conception pour mon redux em> code) p> initialement, j'ai enveloppé la minuterie code> réducteur (ci-dessus) Une fonction qui renvoie un réducteur de minuterie "instance" (pas une instance réelle) et encapsule toute la chose "canard" dans son propre contexte. L'utilisation de cette pensée est affichée dans le fichier Ceci n'est pas 't très robuste parce que cela me demande de savoir à l'avance combien de compteurs doivent être créés et de les coder de manière rigide dans le réducteur principal. p>
Un certain contexte: H2>
0ms code>). p>
Timer.Reducer.js h2>
index.js (réducteur principal) h2>
index.js > (
Timer1 code> &
Timer2 code>). P>
3 Réponses :
Sebastien Lorber a soulevé cette question peu après la sortie de Redux. Il a finalement créé un repo, SLORBER / SCIPABLE-FRONTEND-AVEC-ELM- Or-Redux , qui collecte des exemples de solutions soumis par l'utilisateur à ce type de problème écrit avec différentes implémentations. p>
Il n'y a pas de réponse unique à cette question, mais je vous encourage à regarder ce repo pour des idées. P>
Ceci est quelque peu similaire à la question de la "application TODO" dans les exemples Redux. ( https://github.com/reduxjs/redux/tree/master/examples / todos ).
Je suggérerais que vous gardiez un seul réducteur responsable de la minuterie et du joueur actif au lieu d'un par joueur, car la fonction réducteur sera la même pour toutes. Lorsque le joueur expédie l'action indiquant de mettre à jour son compteur, il doit également spécifier dans l'action qu'est-ce que l'ID du joueur et vous pouvez vérifier si le lecteur actif correspond à l'ID du lecteur expédiant l'action, puis mettez à jour cet identifiant dans l'état. , sinon ignorez-le. Votre état serait quelque chose comme ceci: (ou utilisez l'index de tableau au lieu d'une valeur de clé si vous préférez)
Et votre action serait quelque chose comme: p> et votre réducteur: p> et enfin, si vous avez besoin de mapper Votre état à des accessoires, ce qui vient de prendre du compte en utilisant l'identifiant de ce joueur. Le réducteur peut probablement être écrit mieux, mais j'espère que vous obtenez l'idée. P> p>
Vous auriez besoin d'une sorte de réducteur à clé, comme: Votre réducteur de minuterie serait maintenu isolé. p> p>
Je pense que le réducteur doit contenir
chronométrage code>. Et chaque composant peut filtrer
chronométrage code> de la collection de Redux State par un identifiant unique. Dans ce cas, vous n'aurez qu'un
minuterie code> réducteur avec toutes les données à l'intérieur.
@Vladimirsykh - À l'origine, c'est exactement b> ce que j'ai fait. Un réducteur Counter B> et sa valeur était un tableau (article par utilisateur), mais je n'ai pas aimé cette idée d'avoir un réducteur étant conscient qu'il y a plusieurs joueurs. Je préfère que le compteur soit autonome afin que je puisse la réutiliser aussi dans d'autres projets