如何在Alert React Native中重定向其他页面

时间:2017-05-23 07:14:55

标签: react-native alertdialog

我是React Native的新手。我想从反应原生的警报点击重定向。但是,仍然是错误 这是我的代码。感谢

 render() {
  return (
       <View style={styles.Footer}>
            <TouchableHighlight
                onPress={() => Alert.alert(
                  'Logout',
                  alertMessage,
                  [
                    {text: 'Cancel', onPress: () => console.log('Cancel Pressed!')},
                    {text: 'OK', onPress: () => this.onButtonPress()},
                  ]
                )}>
                <View style={styles.button}>
                  <Text style={styles.buttonTitle}>Logout</Text>
                </View>
              </TouchableHighlight>
        </View>
    );
  }

onButtonPress() {
    const resetAction = NavigationActions.reset({
      index: 0,
      actions: [
        NavigationActions.navigate({ routeName: 'Home'})
      ]
    })
    this.props.navigation.dispatch(resetAction)
  }

3 个答案:

答案 0 :(得分:1)

您应该在父容器中包含onButtonPress,然后将其作为支柱传递给执行代码为CustomDrawerContentComponent的{​​{1}}。

目前您没有{text: 'OK', onPress: () => props.onButtonPress()}。此外,您的功能超出了组件范围。

答案 1 :(得分:1)

您需要调用 onButtonPress 而不是 onButtonPress()

                Alert.alert(
                            'FingerPrint Authentication',
                            'Would you like to authenticate using fingerprint ?',
                            [
                              {text: 'Cancel', onPress: () => console.log('Cancel Pressed!')},
                              {text: 'Yes', onPress: this.onButtonPress},
                            ],
                            { cancelable: false }
                          )


     onButtonPress = () => {
          this.props.navigator.push({
             name: 'Home',
             title: 'Home',
          });
       }

答案 2 :(得分:1)

看起来您需要将this绑定到onButtonPress,以便它具有适当的范围。

constructor(props) {
  super(props);
  this.onButtonPress = this.onButtonPress.bind(this);
}