0
votes

Comment éditer l'état dans réagir en utilisant un formulaire

j'ai suivi Ce didacticiel réagissant sur la création d'une simple application TODO. Maintenant, je veux modifier cette application et ajouter une fonction "Modifier".

J'essaie d'éditer l'état à l'aide de cela.SeState, mais la console.log indique que non capateur TypeError: impossible de lire le «texte» de la propriété non définie < / code>

mon constructeur: xxx

ma fonction d'édition actuelle: xxx

le bon La clé est enregistrée mais rien d'autre ne fonctionne. console.log (this.state.text) renvoie non défini

donc dans ma version simple appuyant sur le bouton d'édition doit modifier le texte de l'appui pour "éditer "Mais ça ne fait rien.


3 commentaires

Pouvez-vous fournir du code où vous appelez la fonction d'édition ... fondamentalement le flux


Donc, vous sélectionnez d'abord l'élément en cliquant sur


  • Oui. Ceci est le code du composant TODOITEMS:

  • {item.text} this.props.deleteitem (item.keyeetitem (item.key)}> Supprimer this.props.editem (item.key)}> Modifier


  • 4 Réponses :


    1
    votes

    regarder votre état, il devrait être this.state.currentitem.text code> xxx pré>

    Vous pouvez mettre à jour votre état comme celui-ci: P>

    editItem = key => {
      console.log(key)
      this.setState(prevState=> ({ currentItem: {key, text: 'edit'})
    }
    


    6 commentaires

    Cela résout la question du retour non défini mais maintenant le journal est vide (j'ai entré du texte)


    OK, dans ce cas, il semble que votre état ne soit pas réglé correctement. Vérifiez cette partie de la logique (peut-être l'ajouter à votre question).


    Quelle partie de ma logique pourrait être fausse? Cela.CurrentItem.text retourne vide. Pouvez-vous m'aider ici?


    Où / comment définissez-vous state.currentitem ou état.currentitem.text ?


    C'est fait sur la fonction de guidon: guidoninput = e => {const itemtext = e.target.value const actuellement actuellement. Ceci.SetState ({actuelItem,})}


    Cela semble correct, je pense que vous devrez peut-être ajouter plus de code à votre question ... Comment guérisseur est appelé, par exemple?



    1
    votes

    Votre journal de console est faux, il devrait être console.log (this.state.currentitem.text);


    3 commentaires

    console.log (this.state.currentitem.text); retourne la valeur vide pour moi. Une idée? J'ai essayé différentes approches mais aucune ne fonctionne


    Il renvoie un élément vide car vous l'initialisez à vide dans le constructeur. Et dans votre fonction d'édition, vous ne ciblez pas le bon état lorsque vous modifiez l'état


    Pouvez-vous préciser quel est un bon état? Je le googla mais je n'ai rien trouvé. Merci de votre aide!



    1
    votes

    La console doit être this.state.currentitem.text . Peut-être devriez-vous obtenir une tasse de café ou une petite promenade avant de vous assister à nouveau à coder :)


    1 commentaires

    Merci. Essayé mais le retour est vide. Une idée?



    0
    votes

    Votre fonction d'édition devrait probablement ressembler à ceci. Vous devez définir l'état actuel de l'état actuel.

    editItem = key => {
      this.setState({
        currentItem: {
           text: 'edit',
           key,
         }
      })
    }
    


    0 commentaires