#react-native
#react-native
Вопрос:
Я хочу передать значения идентификатора или ключа в Chang TEXT, но он или я можем передать только текстовое значение из текстового поля ввода. Как мне передать и идентификатор, и текст
<Input
id={i}
key={i}
placeholder={`Question ${i}`}
onChangeText={(e) => this.editQuestion(e)}
/>
Комментарии:
1. когда я делаю это, все входные данные имеют последний идентификационный номер. Допустим, последний идентификатор ввода равен 10, тогда все они равны 10 для
editQuestion
функции
Ответ №1:
Для этого вы можете использовать функцию currying.
Сначала настройте свою функцию внутри класса так, чтобы она принимала идентификатор в качестве параметра и возвращала функцию, которая принимает событие в качестве параметра:
editQuestion = id => e => {
console.log(id);
console.log(e);
}
Затем вы можете вызвать это следующим образом:
<Input
id={i}
key={i}
placeholder={`Question ${i}`}
onChangeText={this.editQuestion(i)}
/>
У HackerNoon есть хорошая статья об этом, если вам интересно узнать больше.
Комментарии:
1. это сработало, но почему / как
editQuestion = id => e =>
здесь может приниматься текстовое значение?2. Таким образом, этот новый запрос редактирования с карри вернет функцию, которая содержит только параметр события, который onChangeText вызовет с событием изменения текста. Отличие карринга в том, что, по сути, функция, которую получит onChangeText, имеет дополнительный контекст (переданный вами идентификатор), который позволяет повторно использовать ту же функцию editQuestion для любого необходимого вам ввода.