本机如何实现后退按钮

cho*_*obo 1 javascript android navigator react-native

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

这是我在活动中的内容

    @Override
public void invokeDefaultOnBackPressed() {
    getReactInstanceManager().onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我是否需要覆盖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} />
  );
Run Code Online (Sandbox Code Playgroud)

}

在登录中这是第一个场景

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;

}           
Run Code Online (Sandbox Code Playgroud)

}

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

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

Jag*_*yay 6

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

   componentDidMount() {
    BackAndroid.addEventListener('hardwareBackPress', this.onBackPress.bind(this));
}
Run Code Online (Sandbox Code Playgroud)

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

onBackPress(){
    this.props.nav.pop();
    return false; 
}
Run Code Online (Sandbox Code Playgroud)