在调用函数React-Native上保存textInputs的值

时间:2019-03-23 23:49:15

标签: react-native state textinput

我正在从API中获取一些TextInput,并将其推送到Array。然后,我保存了来自用户的输入文本以及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 :(得分:0)

每次键入或更改文本时,都会调用

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>