这可能是一个简单的问题,但由于我是新手做出反应本身对我来说似乎并不容易。 我想从另一个函数(这个.funcToSumbitWithValidations)调用一个函数(this。FunctionToOpenSecondActivity),但它没有调用,没有任何错误。 此外,当我呼叫另一个警报或其他东西时,它也在呼叫 然而,当我直接调用它时,它工作得很好。 这是我的代码: -
//ForgotPasswordActivity
class ForgotPasswordActivity extends Component {
static navigationOptions =
{
title: 'ForgotPasswordActivity',
};
constructor(props) {
super(props);
this.state = { email: '' };
}
FunctionToOpenSecondActivity = () => {
this.props.navigation.navigate('otp');
}
testfunc() {
Alert.alert('testttinnn');
}
funcToSumbitWithValidations = (text) =>{
if(this.state.email==""){
Alert.alert("field cannot be empty");
}else if(this.validate(this.state.email)){
this.testfunc;
this.FunctionToOpenSecondActivity;
}
}
validate = (text) => {
let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (reg.test(text) === false) {
Alert.alert("Email is Not Correct");
this.setState({ email: text })
return false;
}
else {
this.setState({ email: text })
Alert.alert("Email is Correct");
return true;
}
}
render() {
return (
<View style={styles.container}>
<Image
style={styles.stretch}
source={require('./img/login-screen.jpeg')}
/>
<Text style={styles.txtstyle}>
Retrieve Your OTP
</Text>
<TextInput
style={styles.edittext}
placeholder={'Enter email'}
placeholderTextColor={'white'}
inlineImageLeft='icons_gmail'
inlineImagePadding={20}
onChangeText={(email) => this.setState({ email })}
/>
<TouchableOpacity onPress={this.funcToSumbitWithValidations}>
<Image
style={styles.btnLg}
source={require('./img/getotp.jpg')}
/>
</TouchableOpacity>
</View>
);
}
}
答案 0 :(得分:1)
首先,您在构造函数中绑定FunctionToOpenSecondActivity
,以便在访问&#34; this
&#34;时访问此范围。在你的功能。
喜欢:
this.FunctionToOpenSecondActivity = this.FunctionToOpenSecondActivity.bind(this);
然后调用像这样: - this.FunctionToOpenSecondActivity();