Je suis nouveau pour réagir et avoir essayé tout ce que je peux penser. J'ai cherché des threads similaires partout.
J'ai un dictionnaire d'objet avec 4 objets que je fais référence à une utilisation dans une rangée de 4 boutons touchable. Chaque bouton fait référence à un autre objet dans le dictionnaire et je veux Chaque fois que j'appuie sur l'un des boutons, je reçois cette erreur:
Je cours mon code localement en utilisant Expo ON mon Mac avec un simulateur iOS. p> mon composant de ligne de boutons tactileOpacity p> sollevelvel.js p> Je m'attends à l'état Pour être réglé sur celui du bouton que j'ai choisi et que le bouton choisi doit mettre à jour à partir de onpresse code> pour définir l'état sur celui du bouton enfoncé. Un seul des quatre boutons doit pouvoir être sélectionné à un moment donné et le bouton sélectionné doit indiquer qu'il s'agit du bouton sélectionné. P>
SetState (...): Prend un objet de variables d'état à mettre à jour ou à une fonction qui renvoie un objet de variables d'état. code> p>
styles.btninactive code> à
styles.btnactive code>. p> p>
4 Réponses :
manquant Mais je ne suis pas sûr à 100% de ce que vous attendez, car vous initiez le {} code> à partir du
SETState code> et la valeur de la clé doit ressembler à ceci dans votre cas: p>
this.setstate ({FloorLevel: Floorlevel.Lower}) Code> P>
state.floorlevel code> avec un objet
code>, je suppose que vous le modifiez à un
chaîne code> .. pas sûr .. p>
J'ai été confus sur la façon d'initier l'état de Floorlevel Code>, et je ne suis toujours pas vraiment sûr de savoir comment je devrais initier l'état de
Floorlevel code>. Si j'apprimiez l'état de plancher de plancher comme
this.state = {sollevel} code> ou
ceci.state = {solleLevel: {sollevel}} code> ou
this.state = { Floorlevel: ''} code>, l'interface utilisateur fonctionne.
La fonction De même, vous voudrez modifier le code de balises code> code> code> pour avoir une vérification de style valide, comme si: p>
En outre, vous devez probablement changer le constructeur de votre composant, il s'agit actuellement d'initialiser setState code> prend un objet comme argument (l'état de votre composant est un objet). Donc, changez le code
olfress = {() => this.setstate ({sollevel: planchervel.upper})} code>. P>.
style = {this.state.floorlevel === (FlorideVelvel.upper)? styles.btnactive: styles.btninactive} code> p>
de plancher de code> avec un objet et lorsque vous appuyez sur une touche
Floorlevel code> devient une chaîne. P >
@Chasmall Vous devriez vraiment jeter un coup d'œil à votre constructeur, son état d'initialisation d'une manière problématique. Vérifiez la réponse de Vinod et peut-être initialiser votre état de la même manière.
: HattiP: à @brunoeduardo pour m'aider à résoudre mon problème. Voici le nouveau code suivant ses étapes de résolution.
Votre problème commence lorsque vous définissez l'état, comme par votre code, vous tirez dans l'objet entier dans l'objet et l'attribuez-lui le nom du parquet.
Si vous souhaitez modifier l'état sur Appuyez sur, puis comparez la valeur de l'état et faire des changements. Ci-dessous le code pourrait aider un peu p>
J'ai initialisé l'état avec un niveau (sous-sol) et l'intention de mettre à jour la même chose lorsque Onpresse () sera appelé P>
onPress={() => this.setState(level: floorLevel.Lower)
Merci d'avoir pris le temps d'ajouter vos pensées. Bien que j'ai pu le faire fonctionner sans faire de votre changement recommandé, j'ai pris votre conseil et j'ai apporté un changement car votre suggestion est beaucoup plus propre et moins déroutante.