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