未处理的JS异常:_this2.setState不是函数

时间:2016-10-03 08:21:49

标签: react-native

我在密码输入中遇到onChangeText的问题。我想要做的详细说明:我想最初禁用提交按钮,当两个输入字段都填满后再启用提交按钮。如果您有任何其他方法可以解决此问题,请分享。

<InputGroup style={styles.inputBox}>
                        <Icon name='ios-person' style={{color: 'white'}}/>
                        <Input placeholder='Email' style={styles.input}
                               placeholderTextColor='rgba(255, 255, 255, 0.6)'
                               value={this.state.username}
                               onChangeText={(text) => this.setState({username: text})}
                               onChange={this.onInputChange} />
                    </InputGroup>
                    <InputGroup style={styles.inputBox}>
                        <Icon name='ios-unlock' style={{color: 'white'}}/>
                        <Input placeholder='Password' style={styles.input}
                               secureTextEntry={true}
                               placeholderTextColor='rgba(255, 255, 255, 0.6)'
                               value={this.state.password}
                               onChangeText={(text) => this.setState({password: text})}
                               onChange={this.onInputChange} />
                    </InputGroup>
                    <Button block bordered success style={styles.submitButton} onPress={this.onSignIn} disabled={this.state.submitButtonFlag}>
                        Sign In
                    </Button>

onChangeInput的代码:

onInputChange() {

  if (this.state.username != null && this.state.password != null) {
    console.log("this.state.submitButtonFlag: ");
    this.setState = {submitButtonFlag: false};
    console.log(this.state.submitButtonFlag);
  }

}

2 个答案:

答案 0 :(得分:1)

两个错误:

  1. 引用并更正此范围:onChange={() => this.onInputChange()} />

  2. setState是一个函数:this.setState({submitButtonFlag: false});

答案 1 :(得分:0)

您需要绑定您要调用的方法,或者使用诸如 @zvona 所述的回调

  

第一种方式

  1. onChange={this.onInputChange.bind(this)}
  

第二种方式

onChange={() => this.onInputChange()}