在我的应用程序上,我添加了一个可触摸的不透明度,当我单击该按钮时,我需要运行一个功能。
<TouchableOpacity
activeOpacity={0.9}
style={styles.Button}
onPress={this.login_account.bind(this)}
>
<Text style={styles.ButtonText}>Login</Text>
</TouchableOpacity>
当我尝试在该函数中访问this.setState时,它会发出警告
我在这方面做错了什么?
这是我的login_account函数
login_account() {
let username = this.state.username;
let password = this.state.password;
error_message = "";
has_error = false;
if (username == "" || password == "") {
error_message += "Username and password should no be empty.";
}
if (has_error == false) {
//code here....
} else {
this.setState({
status_code: 6001,
message: error_message,
show_popup: true
});
}
}
答案 0 :(得分:4)
您将功能绑定到的None
可能不是组件的功能,具体取决于该代码在哪里。
尝试在构造函数中进行绑定:
this
或将constructor(props) {
super(props);
...
this.login_account = this.login_account.bind(this);
}
方法转换为箭头函数,以免覆盖login_account
:
this
答案 1 :(得分:0)
您只需将函数实现为箭头函数,然后就不再需要绑定它:
因此,您的功能将如下所示:
login_account = () => {
// your code here
}
并将Touchable组件中的function属性修改为:
<TouchableOpacity
activeOpacity={0.9}
style={styles.Button}
onPress={this.login_account}
>
<Text style={styles.ButtonText}>Login</Text>
</TouchableOpacity>