Сохранить значение textInputs при вызове функции React-Native - PullRequest
2 голосов
/ 24 марта 2019

Я извлекаю некоторые TextInputs из API и помещаю их в массив.Затем я сохраняю введенный текст от пользователя и все ключи и значения, которые есть у объекта textinput.Однако, когда я сохраняю, он сохраняется каждый раз, когда я изменяю текст.Я хочу сохранить и передать все в массив, когда я вызываю функцию ниже в View.По сути, я хочу, чтобы состояние передавалось в массив только после вызова функции, а не каждый раз, когда я меняю текст.

Я ценю любое предложение!Пожалуйста, дайте мне знать, если вопрос недостаточно ясен.

myInputFields = {
   myTextFields: [],
};

textfieldsObject = () => {
const obje = this.props.navigation.state.params.item;
var keyvalue_to_json = JSON.parse(obje.keyValues);
var foundTextFields = [];

for (let i = 0; i < keyvalue_to_json.inputFields.length; i++) {
  if (keyvalue_to_json.inputFields[i].type === 'textfield') {
    foundTextFields.push(<TextInput style={{ borderWidth: 1 }}

      onChangeText={(text) => {
        keyvalue_to_json.inputFields[i].inputValues = text;
        this.myInputFields.myTextFields.push(keyvalue_to_json.inputFields[i])
      }}
    >{keyvalue_to_json.inputFields[i].placeholderText}</TextInput>)</Text>)
  }
}

}

1 Ответ

0 голосов
/ 24 марта 2019
Событие

onChangeText будет вызываться каждый раз при вводе или изменении текста.Вам необходимо использовать событие onEndEditing , которое срабатывает только после окончания ввода текста.Таким образом, ваш TextInput код будет:

<TextInput style={{ borderWidth: 1 }}
  onEndEditing={(e) => {
    keyvalue_to_json.inputFields[i].inputValues = e.nativeEvent.text;
    this.myInputFields.myTextFields.push(keyvalue_to_json.inputFields[i])
  }}
>{keyvalue_to_json.inputFields[i].placeholderText}
</TextInput>
...