本机如何实现后退按钮

时间:2016-02-12 07:28:18

标签: javascript android react-native navigator

我不明白如何实现后退按钮。以编程方式推送动态,当我点击按钮时,它将继续弹出屏幕,如果没有更多场景要弹出,则退出反应原生视图并返回原生视图

以下是我在活动中的内容

    @Override
public void invokeDefaultOnBackPressed() {
    getReactInstanceManager().onBackPressed();
}

在这种情况下我是否需要覆盖OnBackPressed?

以下是我如何设置导航器

    render() {

    return (
        <Navigator
            initialRoute={{name: 'root'}}
            renderScene={this.renderScene.bind(this)}
            configureScene={(route) => {
                if (route.sceneConfig) {
                    return route.sceneConfig;
                }
                return Navigator.SceneConfigs.FloatFromRight;
            }} />
    );
  }
  renderScene(route, navigator) {
  return (
    <Login
      navigator={navigator} />
  );

}

在登录中这是第一个场景

class Login extends Component {

constructor(props) {
    super(props);        
    _navigator = this.props.navigator
    // Private variables
    this.state = {
        isLoading: true,

    }
}


                <View style={styles.leftContainer}>
                    <TouchableHighlight style={styles.button} onPress={this.onPressButton}>
                        <Text style={[styles.buttonText]}>Invite</Text>
                    </TouchableHighlight>
                </View>

onPressButton() {
    console.log("back button");
    if (this.props.navigator && this.props.navigator.getCurrentRoutes() > 1) {
        console.log("pop");
        this.props.navigator.pop();
        //return true;
    }
    console.log("false");
    //return false;

}           

}

当我点击按钮时没有任何反应。我想要的是退出反应原生视图,因为它位于场景的顶部。

奇怪的是,我甚至在点击按钮之前就看到了控制台日志。这是正常的吗?

2 个答案:

答案 0 :(得分:6)

首先,从react-native导入BackAndroid。之后处理硬件后退按钮

   componentDidMount() {
    BackAndroid.addEventListener('hardwareBackPress', this.onBackPress.bind(this));
}

如果要关闭app,请从onBackPress()返回false,否则返回true。

onBackPress(){
    this.props.nav.pop();
    return false; 
}

答案 1 :(得分:1)

 onPress={this.onPressButton} 

onPress={() => this.onPressButton}

onPress={this.onPressButton.bind(this)}

正确绑定,看看是否有效。请记住,在es6中,您必须正确绑定您的函数。 ES5自动完成。

相关问题