我使用react-native-router-flux
作爲我的導航器。我面臨的問題可能很簡單,但我似乎無法把頭腦放進去。當用戶登錄到應用程序時,他/她將被重定向到主儀表板場景。從那裏,如果用戶按下了安卓後退按鈕,應用程序應邏輯關閉,而不是再次導航回登錄屏幕,但我無法掌握實現此目的的缺失邏輯。後退按鈕重定向到登錄屏幕
路由器:
import React, { Component } from 'react'
import {
TouchableOpacity
} from 'react-native'
import { Scene, Router, Actions } from 'react-native-router-flux'
import Login from '../pages/login'
import Dashboard from '../pages/dashboard'
import NavigationDrawer from './navigationDrawer'
import Icon from 'react-native-vector-icons/MaterialIcons';
const Menu =() => {
return(
<TouchableOpacity
onPress={() => Actions.refresh({key: 'drawer', open: value => !value }) }>
<Icon
name="view-headline"
size={30}
color="white"
/>
</TouchableOpacity>
)
}
class NavigationRouter extends Component {
render() {
return(
<Router>
<Scene initial key="login" component={Login} hideNavBar/>
<Scene key="drawer" component={NavigationDrawer} open={false} >
<Scene key="main">
<Scene initial key="dashboard" title="Dashboard" navigationBarStyle={Styles.navigationBarStyle} component={Dashboard} hideNavBar={false}
renderLeftButton={() => (<Menu/>)} />
</Scene>
</Scene>
</Router>
)
}
}
const Styles = {
navigationBarStyle: {
backgroundColor: "#fda21d"
}
}
export default NavigationRouter;
儀表板場景:
import React, {Component} from 'react'
import {
View,
Text,
BackAndroid
} from 'react-native'
import {Actions} from 'react-native-router-flux'
import Icon from 'react-native-vector-icons/MaterialIcons'
class Dashboard extends Component {
constructor(props) {
super(props)
BackAndroid.addEventListener('hardwareBackPress', function() {
if (this.props.title === 'Dashboard') {
console.log("pressed");
}
})
}
render() {
[...]
}
我嘗試使用BackAndroid API,Facebook的提供,但它也根本不工作。
我想簡單的解決辦法是使用'Actions'與復位型。在登錄成功時嘗試'Actions.drawer({type:'reset'});'。 –