将应用转换为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
})
答案 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')
}
// [...]