I have multiple Input
elements and everytime the user type into these Inputs I call handleChange()
function which should tell what the user has written and which Input he has typed in.
This is what I have done:
handleChange(text, name) {
console.log("test: "text+" "+name);
}
//.23/docs/textinput.html
for (var p = 0; p < 20; p++){
products.push (<TextInput name={p} onChangeText={(text, name) => this.handleChange(text, name)}></TextInput> );
}
the console.log
inside handleChange
function correctly shows the text written by user but doesn't display correctly name
variable which results undefined
.
I have multiple Input
elements and everytime the user type into these Inputs I call handleChange()
function which should tell what the user has written and which Input he has typed in.
This is what I have done:
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> );
}
the console.log
inside handleChange
function correctly shows the text written by user but doesn't display correctly name
variable which results undefined
.
- 1 facebook.github.io/react-native/docs/handling-text-input.html - it doesn't appear to have the 2nd param. – G0dsquad Commented Jan 4, 2017 at 15:46
-
onChangeText by default takes the parameter value as the text entered and hence only one param. What you can try is
onChangeText{(text, p) => this.handleChange(text, p)}}
and see if it works – Shubham Khatri Commented Jan 4, 2017 at 15:52 - How can I solve this? – splunk Commented Jan 4, 2017 at 16:09
2 Answers
Reset to default 9What is name
supposed to be? All you're doing is setting name to an integer, but here's a way to make it work:
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> );
}
handleChange= (name) => {
return (text) => {
console.log("test: "name+" "+text);
}};
[https://hackernoon./curry-away-in-react-7c4ed110c65a][1]
for (let p = 0; p < 20; p++){
products.push (<TextInput onChangeText={this.handleChange(p)}>
</TextInput> );
}