1
我试着用监听器实现Backhandler,在componentWillMount IM添加监听器,并在componentWillUnMount IM移除侦听器时,我们推到但componentWillUnMount不叫其他组件。所以监听器是存在于其他组件也,有同的TabBar反应本地路由器通量的问题如何反应本地路由器通量使用BackHandler用的TabBar
我试着用监听器实现Backhandler,在componentWillMount IM添加监听器,并在componentWillUnMount IM移除侦听器时,我们推到但componentWillUnMount不叫其他组件。所以监听器是存在于其他组件也,有同的TabBar反应本地路由器通量的问题如何反应本地路由器通量使用BackHandler用的TabBar
补回来处理工作,集中配置,我通常有一个组件的处理函数调用AppNavigation
这是路由器组件的父节点。
它看起来是这样的:
<AppNavigation>
<Router>
<Scene key="root">
{/* other scenes */}
</Scene>
</Router>
</AppNavigation>
处理中AppNavigation背部按钮,然后会相对简单:
import React, {Component} from "react";
import {BackAndroid} from "react-native";
import {Actions} from "react-native-router-flux";
class AppNavigation extends Component {
constructor(props) {
super(props);
}
componentDidMount() {
//listens to hardwareBackPress
BackAndroid.addEventListener('hardwareBackPress',() => {
try {
Actions.pop();
return true;
}
catch (err) {
console.debug("Can't pop. Exiting the app...");
return false;
}
});
}
componentWillUnmount(){
console.log("Unmounting app, removing listeners");
BackAndroid.removeEventListener('hardwareBackPress');
}
render() {
return this.props.children;
}
}
export default AppNavigation;
附:不要忘了区分Android和iOS,因为我相信iOS没有后退按钮。
谢谢。它的工作 –
伟大的帮助! :)你会介意接受我的答复作为答案吗?谢谢! – Siwananda