在OnSubmitEditing中使用时,超出了最大更新深度

时间:2019-08-31 19:22:57

标签: javascript react-native react-native-android

与大多数遇到此问题的人不同,当我在TextInput的onSubmitEditing中使用this.myFunc调用函数时,会得到最大的更新深度错误。

我尝试过使用箭头功能,而不是,在该功能后添加了.bind和(),但没有解决此问题的方法

  storeData = async () => {
    try {
      await AsyncStorage.setItem(this.state.title, this.state.text);
    } catch (e) {
      // saving error
    }
  };


//other code, render stuff etc.

        <TextInput
          placeholder="Event Due Date"
          onChangeText={text => this.setState({text})}
          onSubmitEditing={
            (() => this.storeData, //this line fires the error
            this.setState({
              display: 'none',
              text: '',
              title: '',
              reminders: (this.state.reminders += 1),
            }))
          }
          value={this.state.text}
          style={[styles.textInput, {display: this.state.display}]}
        />

当我删除this.storeData时,setState可以正常工作,但是添加该行会引发错误。目的是让用户完成编辑后(通过单击键盘上的复选标记)执行storeData方法

1 个答案:

答案 0 :(得分:0)

此代码可能会帮助

storeData = async () => {
    try {
      await AsyncStorage.setItem(this.state.title, this.state.text);

      this.setState({
          display: 'none',
          text: '',
          title: '',
          reminders: (this.state.reminders += 1),
        });

    } catch (e) {
      // saving error
    }
  };

onSubmitEdit = () => {
    this.storeData();
}


//other code, render stuff etc.

<TextInput
  placeholder="Event Due Date"
  onChangeText={text => this.setState({text})}
  onSubmitEditing={this.onSubmitEdit} />
  value={this.state.text}
  style={[styles.textInput, {display: this.state.display}]}
/>