React Navigation + Redux关闭应用程序背面按下

时间:2017-07-10 17:59:53

标签: android react-native react-navigation

将应用转换为redux后,我的react-navigation遇到了一些问题。以前,在与redux集成之前,当我按下后退按钮(物理按钮)时,反应导航回到上一个屏幕。与redux集成后,后退按钮将关闭应用程序。但是,它仍在使用goBack()函数。

而且,这是我的Navigator配置

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)

编辑:可以通过手动操作完成。发回行动,但它不能自动完成吗?就像之前使用redux一样?

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

1 个答案:

答案 0 :(得分: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')
  }
// [...]