私は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() {
[...]
}
私はFacebookが提供BackAndroidのAPIを使用してみましたが、それはまた、全く機能していません。
私は簡単な解決策は、リセットタイプで 'Actions'を使用することだと思います。ログインが成功したら 'Actions.drawer({type: 'reset'}))'を実行してください。 –