Je construis une application réagissante qui résout un tableau de Sudoku et visuette l'algorithme de résolution.
J'essaie de convertir les composants de la classe en composants fonctionnels, mais je ne suis pas sûr de savoir comment faire fonctionner les changements d'état. < / p>
Le code problématique est: p> ( Code complet ici et le
App est hébergé ici ) p> ici j'ai besoin Lorsque vous essayez de convertir en un composant fonctionnel J'ai essayé: p> Mes questions sont: p> async code> afin que je puisse utiliser
veille () code> pour visualiser l'algorithme. J'utilise
this.setstate ({tableau: carte}); code> pour déclencher un re-rendu à chaque fois que la carte est mutée. P>
usestate code> Crochet, j'ai utilisé
const [carte, interrupteur] = USESTE (Initialboard); code> et remplacé le
this.setstate code> appels avec code> Code> Setboot (tableau) code>. Cela n'a pas fonctionné car le crochet est en train d'être appelé dans une boucle li>
usestate code> avec
useEffect code> (i.e.
useEffect (((() => Setboot (tableau]) code]). Cela n'a pas compilé, obtient l'erreur
réact de crochet "useeffect" peut être exécutée plus d'une fois ... Code> Li>
useEducer code> mais avoir Lire qu'il ne fonctionne pas bien avec
async Code>
li>
ul>
résoudre () code> fonction? LI>
3 Réponses :
Essayez le Je souhaite que cela faisait partie de la bibliothèque de réaction standard P> userasynceffect code> hook p>
Où mettais-je les appels code> userasynceffect code>?
Remplacer useeffect avec udeasynceffect
Vous pouvez utiliser un effet à chaque fois que la carte change à cet effet. Quand il n'y a plus de mouvements, le tableau ne change pas et l'effet ne fonctionnera plus.
Voici un exemple de la façon dont vous pouvez faire cela: P>
P>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script> <div id="root"></div>
Utiliser avec Le problème était que je ne copie pas correctement le conseil; nécessaire d'utiliser Code complet du composant fonctionnel est Ici . P>
Le code de composant de classe précédente est ici < / a>. p> USESTE CODE> HOOK. P>
const boodcopy = [... board]; code> (plutôt que
const bookcopy = carte code>). P>
Hey avez-vous essayé
userasynceffect code> au lieu d'useeffect? J'utilise ce forfait NPM chaque fois que j'ai des crochets asynchrones comme celui-ci lien NPM