2017-07-10 6 views
2

アプリをreduxに変換した後、私のreact-navigationに問題があります。以前は、reduxと統合する前に、戻るボタン(物理的なボタン)を押すと、反応ナビゲーションが前の画面に戻ります。 reduxと統合した後、戻るボタンはアプリケーションを終了します。しかし、それはまだgoBack()の機能で動作しています。リアクションナビゲーション+ Redux閉じる上のアプリケーションを押した

をそして、これは私のナビゲーター構成

export const AppNavigator = StackNavigator(
    { 
     Home: { screen: HomeScreen }, 
     ChatDetail: { screen: ChatDetail }, 
     PulsaDetail: { screen: PulsaDetailScreen }, 
     Pulsa: { screen: Pulsa } 
    }, 
    { 
     headerMode: 'none', 
    } 
) 

class AppWithNavigation extends Component { 
    render(){ 
     return(
      <AppNavigator navigation={ addNavigationHelpers({ 
       dispatch: this.props.dispatch, 
       state: this.props.nav, 
      })} /> 
     ) 
    } 
} 

const mapStateToProps = (state) => ({ 
    nav: state.nav 
}) 

export default connect(mapStateToProps)(AppWithNavigation) 

EDITである:それはすることができます手動ハンドル&発送バックアクションで済ませましたが、自動ではできませんか? reduxを使う前のように?

BackHandler.addEventListener('hardwareBackPress',() => { 
    this.props.goBack() 
    return true 
}) 

答えて

2

反応ナビゲーションリポジトリでのGithub発行後、私は答えを得ました。

画面/構成要素の上に手動バックリスナーを追加する必要が

// App.js 
import { BackAndroid } from 'react-native' 
// [...] 
    componentDidMount() { 
    BackAndroid.addEventListener('backPress',() => { 
     const { dispatch, nav } = this.props 
     if (shouldCloseApp(nav)) return false 
     dispatch({ type: 'Back' }) 
     return true 
    }) 
    } 

    componentWillUnmount() { 
    BackAndroid.removeEventListener('backPress') 
    } 
// [...] 
関連する問題