我第一次使用React-Native-Navigation v2,为一个简单的应用程序建模,该应用程序的底部具有3个选项卡,侧边栏具有一个按钮,当按下该按钮时,该按钮将导航到第四屏,模仿“注销” '。然后,该第四个选项卡将具有一个按钮,该按钮可通过返回到bottomTabs堆栈一部分的第一个屏幕来模仿“登录”。
我拥有的代码有效,但是只有一次。注销(将新屏幕推到堆栈中)后,我可以重新登录(将该屏幕弹出堆栈)。但是,当我尝试再次注销时,我将无法执行此操作。推送到堆栈的功能似乎不再起作用。
handleLogOutPress = () => {
Navigation.push('CenterStack', {
component: {
name: 'navigationApp.FourthTabScreen',
passProps: {
text: 'Logged Out'
},
options: {
topBar: {
visible: false
}
}
}
})
Navigation.mergeOptions('CenterStack', {
sideMenu: {
left: {
visible: false
}
}
})
}
function handleLoginPress(){
Navigation.pop('CenterStack')
}
这是我最初设置堆栈的方式:
Navigation.setRoot({
root: {
sideMenu: {
left: {
component: {
id: 'SideMenu',
name: 'navigationApp.SideMenu'
}
},
center: {
stack: {
id: 'CenterStack',
children: [
{
bottomTabs: {
children: [
{
component: {
id: 'FirstTab',
name: 'navigationApp.FirstTabScreen',
passProps: {
text: 'Home',
id: 'FirstTab'
},
options: {
bottomTab: {
icon: images[0],
text: 'Home',
iconColor: 'darkblue',
selectedIconColor: 'lightblue'
},
topBar: {
visible: false
}
}
},
},
{
component: {
id: 'SecondTab',
name: 'navigationApp.SecondTabScreen',
passProps: {
text: 'Search',
id: 'SecondTab'
},
options: {
bottomTab: {
icon: images[1],
text: 'Search',
iconColor: 'darkblue',
selectedIconColor: 'lightblue'
},
topBar: {
visible: false
}
}
},
},
{
component: {
id: 'ThirdTab',
name: 'navigationApp.ThirdTabScreen',
passProps: {
text: 'Share',
id: 'ThirdTab'
},
options: {
bottomTab: {
icon: images[2],
text: 'Share',
iconColor: 'darkblue',
selectedIconColor: 'lightblue'
},
topBar: {
visible: false
}
}
}
},
],
}
}
],
},
}
}
}
})
我可能完全误解了推送/弹出的工作方式,感谢任何帮助和指导。
答案 0 :(得分:0)
对于正在使用popToRoot
而不是Pop
的其他人,此问题可以解决