React Native Как передать Props onChangeText

#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 для любого необходимого вам ввода.