2017-09-29 1 views
1

Je suis en train d'accéder à la valeur de la matière saisie de texte ui j'utilise quand j'appelle la fonction, mais je dois aussi passer par d'autres paramètres,Pourquoi ne puis-je lire la valeur du bien en cas

cette est le code qui appelle la fonction dans sa classe parente.

<Input 
    value={this.props.appState.application.Person[0].Forename} 
    className={classes.input} 
    onChange={this.testHandleChange(0, 'Person')} 
    name="Forename" 
    inputProps={{ 
     'aria-label': 'Description', 
    }} 
/> 

Et ceci est la fonction qu'il appelle dans le parent

testHandleChange = event => (userIndex, object) => { 
    console.log(`userIndex: ${userIndex}`); 
    console.log(`object: ${object}`); 
    console.log(`value: ${event.target.value}`); 
}; 

il ne cesse de dire l'utilisation inattendue du « événement » global. sur l'entrée mais pas sur la fonction comment puis-je résoudre ce problème?

edit: donc j'ai légèrement changé quelque chose et j'ai eu un peu d'une meilleure erreur je pense mal changer le code ci-dessus.

cela me donne maintenant l'erreur

ne peut pas lire la propriété 'valeur' ​​undefined

Répondre

3

Vous écrivez:

event => (userIndex, object) => 

Mais cela signifie que vous retournez une fonction prend les paramètres de (userIndex, object) et passe ça à onChange. Mais il doit être:

(userIndex, object) => event => 

Ici vous retournez une fonction qui prend un événement comme param. C'est ce que onChange attend.

+1

S'il vous plaît donner un peu plus de contexte à votre réponse afin que les gens puissent comprendre ce qui se passe mieux – bennygenel

+0

Parfait fonctionne comme un charme si vous mettez des choses que vous ne passez pas en dernier si elles sont des variables globales? –

+0

Il ya plus qu'assez de contexte là pour savoir ce qui a mal fait –

0

Une meilleure façon de résoudre ce serait d'attraper l'événement avec des fonctions anonymes et transmettre comme arg:

onChange={(event) => { this.testHandleChange(event, 0, 'Person'); }} 

puis dans votre gestionnaire:

testHandleChange = (event, userIndex, object) => { ... }