Я работаю над проектом, который включает в себя вход пользователей, и он работает нормально (я использую firebase для аутентификации). Однако для входа в систему требуется некоторое время, в зависимости от подключения к Интернету, поэтому мне нужно отключить кнопку после нажатия и снова включить ее. Вот мой код:
class Login extends Component {
handlelogin = () => {
this.setState.errorMessage = '';
const {email, password} = this.state;
auth
.signInWithEmailAndPassword(email, password)
.then(() => this.props.navigation.navigate('Home'))
.catch((error) => this.setState({errorMessage: error.message}));
};
render() {
return (
// Some code to handle input
<TouchableOpacity
style={
!this.state.email || !this.state.password
? styles.disabled
: styles.button
}
disabled={!this.state.password || !this.state.email}
onPress={this.handlelogin}>
<Text style={{color: '#fff', fontWeight: '500'}}>Sign in</Text>
</TouchableOpacity>
)}
Я пробовал этот ответ, чтобы мой код работал так, но это не сработало:
class Login extends Component {
loginProcess = false;
handlelogin = () => {
this.setState.errorMessage = '';
const {email, password} = this.state;
auth
.signInWithEmailAndPassword(email, password)
.then(() => this.props.navigation.navigate('Home'))
.catch((error) => {
this.setState({errorMessage: error.message})
this.loginProcess = false;
});
};
render() {
return (
// Some code to handle input
<TouchableOpacity
style={
!this.state.email || !this.state.password
? styles.disabled
: styles.button
}
disabled={!this.state.password || !this.state.email}
onPress={()=> {
if (!loginProcess) {
this.handleLogin;
this.loginProcess = true;
}
}>
<Text style={{color: '#fff', fontWeight: '500'}}>Sign in</Text>
</TouchableOpacity>
)}
P.S. Это мой первый вопрос о stackoverflow, любой совет по написанию более подробных вопросов приветствуется.