2017-08-09 6 views
1

J'ai essayé de coder un composant TextField contrôlé de façon standard comme dans React docs:Comment créer un composant Fabric UI TextField contrôlé?

handleChange(event) { 
    this.setState({ 
      text: event.target.value 
    }); 
} 

<TextField label='Enter Text' value={this.state.text} onChange={this.handleChange}/> 

Le code ci-dessus est ce que je l'ai utilisé, mais il semble qu'il ne change pas l'état du composant de réaction, parce que dans la même forme si je change une case à cocher contrôlée, il réinitialise le champ de texte pour être vide. Si j'utilise un élément d'entrée html standard, il fonctionne comme prévu et n'efface pas le champ.

Qu'est-ce que je fais mal ici? TextField ne devrait-il pas fonctionner de la même manière qu'une entrée de type texte?

+0

Mettez 'console.log (event.target.value)' dans la fonction handleChange et vérifiez la valeur, cela devrait fonctionner. –

+0

J'ai essayé cela et pour une raison quelconque, cela ne fonctionne pas. –

+0

quelle est la valeur qu'il imprime? –

Répondre

3

De l'docs, onChange est pas une propriété. Utilisez onChanged à la place. Notez que la valeur de retour est la valeur du champ de texte, pas un événement.

+0

Merci, je l'ai compris il y a 10 minutes j'étais en train de répondre mais vous étiez plus rapide donc je vais l'accepter –

+0

Wow, ça m'a pris une éternité pour le découvrir. c apprenant ... –

1

Selon cette example:

handleChange(value) { 
 
    this.setState({ 
 
      text: value 
 
    }); 
 
}

+0

ne fonctionne pas.Egalement je ne vois pas d'exemple là-bas pour un TextField contrôlé, j'ai regardé cela avant de poser la question.J'ai eu un problème similaire en essayant de mettre en œuvre une case à cocher mais pour cela Microsoft fournit un exemple approprié: https://github.com/OfficeDev/office-ui-fabric-react/blob/master/packages/office-ui-fabric-react/src/components/Checkbox/examples /Checkbox.Basic.Example.tsx mais malheureusement pour TextField je n'ai trouvé aucune solution –

+0

Avez-vous lié votre 'handleChange' dans votre composant? –

+0

Oui, j'ai (dans le constructeur après l'initialisation de l'état' this.handleChange = this.handleChange. bind (this) ') –