反应原生如何实现后退按钮
问题描述:
我不理解如何实现后退按钮。该sceen以编程方式推送,当我点击该按钮时,它将继续弹出屏幕,如果没有更多场景可以弹出,则退出反应原生视图并返回本地视图反应原生如何实现后退按钮
这里是我在活动
@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;
}
}
当我按一下按钮没有发生。我想要的是退出反应原生视图,因为它位于场景的顶部。
奇怪的是我看到控制台日志打印之前,我甚至点击按钮。这是正常的吗?
答
onPress={this.onPressButton}
到
onPress={() => this.onPressButton}
或
onPress={this.onPressButton.bind(this)}
绑定得当,看看是否能工程。在es6中记住,你必须正确地绑定你的功能。 ES5自动执行。
答
首先,从react-native导入BackAndroid。之后,处理硬件后退按钮
componentDidMount() {
BackAndroid.addEventListener('hardwareBackPress', this.onBackPress.bind(this));
}
如果你想关闭应用程序,从onBackPress()返回false,否则返回true。
onBackPress(){
this.props.nav.pop();
return false;
}