如何从响应本机的另一个函数调用一个函数

时间:2018-03-12 12:14:01

标签: javascript function react-native

这可能是一个简单的问题,但由于我是新手做出反应本身对我来说似乎并不容易。 我想从另一个函数(这个.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>
);
  }
}

1 个答案:

答案 0 :(得分:1)

首先,您在构造函数中绑定FunctionToOpenSecondActivity,以便在访问&#34; this&#34;时访问此范围。在你的功能。 喜欢:

   this.FunctionToOpenSecondActivity = this.FunctionToOpenSecondActivity.bind(this);

然后调用像这样: - this.FunctionToOpenSecondActivity();