在Google的大部分应用中,例如(联系人,gmail,...),只要您点击菜单条目,例如"设置" /"个人资料" /"退出"它关闭抽屉,然后(一旦完成动画)打开"设置" /无论如何。
我有一个与StackNavigator相同的需求,其中[SideMenu,settings]与SideMenu作为DrawerNaVigator。
目前我没有找到任何方法来关闭"很好地"抽屉。通过在NavigationActions.navigate()之前使用NavigationActions.back(),它可以完成工作但动画重叠。通过使用NavigationActions.navigation的超时,它似乎等待抽屉关闭结束但抽屉关闭和新屏幕打开之间的时间太长。无论如何,这似乎不是一个有效的解决方案。
// close drawer
NavigationActions.navigate('DrawerClose')
// navigate and overlap drawer close
NavigationActions.navigate('settings')
// close drawer
NavigationActions.navigate('DrawerClose')
// navigate and at least wait for the end of drawer close animation
// even with 1
// Also create a latency, (drawer close, .. some ms .., navigate
setTimeout(() => {
NavigationActions.navigate('settings')
}, 1, 2, whatever)
为了实现这一目标,我们是否应该在其他行动的最后添加行动? 例如:
// close drawer
NavigationActions.navigate({
routeName: 'DrawerClose',
// then navigate to settings
nextAction: NavigationActions.navigate('settings')
})