2017-01-04 5 views
0

Ich habe mehrere Input Elemente und jedes Mal wenn der Benutzer Art in diese Eingänge I handleChange() Funktion aufrufen, die sagen sollte, was der Benutzer geschrieben hat und welcher Eingang hat er getippt inPass mehrere params onChangeText Eingangselement Funktion - Reagieren nativen

. Dies ist, was ich getan habe:

handleChange(text, name) { 
    console.log("test: "text+" "+name); 
} 

//http://facebook.github.io/react-native/releases/0.23/docs/textinput.html 
for (var p = 0; p < 20; p++){ 
     products.push (<TextInput name={p} onChangeText={(text, name) => this.handleChange(text, name)}></TextInput>); 
} 

die console.log innerhalb handleChange Funktion korrekt den Text durch den Benutzer geschrieben zeigt aber nicht korrekt angezeigt name Variable, die undefined führt.

+1

https://facebook.github.io/react-native/docs/handling-text-input.html - Es scheint nicht den 2. Param zu haben. – G0dsquad

+0

onChangeText nimmt standardmäßig den Parameterwert als eingegebenen Text und damit nur einen Parameter. Was Sie versuchen können, ist 'onChangeText {(Text, p) => this.handleChange (Text, p)}}' und sehen, ob es funktioniert –

+0

Wie kann ich das lösen? – splunk

Antwort

1

Was soll name sein? Alles, was Sie tun Namen auf eine ganze Zahl Einstellung, aber hier ist ein Weg, es funktioniert:

handleChange(text, name) { 
    console.log("test: "text+" "+name); 
} 

//http://facebook.github.io/react-native/releases/0.23/docs/textinput.html 
for (let p = 0; p < 20; p++){ 
    products.push (<TextInput onChangeText={(text) => this.handleChange(text, p)}></TextInput>); 
} 
+0

Wenn ich dich mag, sagte jedes Mal, dass handleChange heißt p ist immer gleich 19, der letzte Wert des Schleifenindex. Stattdessen möchte ich folgendes: Wenn ich den ersten Eingang "p" ändere (der in den Parametern mit Text übergeben wird) sollte 1 sein, wenn ich den zweiten Eingang ändere, sollte "p" 2 sein und so weiter. In meinem Code scheint name = {p} nicht "p" zu benennen. Ich versuchte mit Wert = {p} und Eingaben waren immer noch leer, während, wenn ich Wert = "a" mache, alle 20 Eingaben Inhalt "a" halten. Wie kann ich dem Namen und Wert der Eingänge die Variable "p" zuweisen? – splunk

+1

Ich verstehe immer noch nicht, was Sie meinen, die 'text'-Variable ist, was auch immer der Benutzer in das Textfeld eingibt. Auch wenn Sie 'var p = 0 'zu' p = 0' ändern, sollte das Ihr anderes Problem lösen. –