我正在尝试从sideMenu调用Navigate.push
,但是什么也没发生。
Navigation.setRoot({
root: {
sideMenu: {
left: {
component: {
name: 'app.SideMenu',
},
children: [
{
stack: {
children: [
{
component: {
name: TERMS_SCREEN.id,
}
},
]
}
}
]
},
center: {
bottomTabs: {
id: 'BottomTabsId',
options: {
topbar: {
visible: true,
}
},
children: [
{
stack: {
id: 'Tabs',
children: [
{
..并且我试图像这样在sideMenu中推送屏幕
console.log(this.props.componentId);
Navigation.push(this.props.componentId, {
component: {
name: 'app.Terms',
}
})
我正在获取日志,但没有任何反应。我很肯定我需要对布局做一些事情,但是在文档中没有看到示例或解释。
答案 0 :(得分:2)
在菜单中构造组件的方式存在问题。问题是您必须具有一个堆栈,才能按其外观推入其他屏幕-侧面菜单屏幕不是这种情况。
这就是设置left
的{{1}} sideMenu
组件的方式;完成此操作后,您将可以完全像使用stack
一样推动屏幕:
Navigation.push(this.props.componentId...
答案 1 :(得分:2)
我做错的事实际上是因为我实际上需要传递当前选项卡的ID时传递了sidemenu componentId。像这样的东西。
Navigation.push(`Tab${this.props.activeTabIndex + 1}`,{
component: {
name: Screens.ACCOUNTS,
}
}
)
这也是侧面菜单布局
root: {
sideMenu: {
id: 'SideMenu',
left: {
component: {
id: 'SideMenu.left',
name: Screens.SIDEMENU,
}
},
答案 2 :(得分:0)
同时在children
对象中拥有stack
和sidemenu
可能是一种解决方案。但您也可以这样做。考虑关注
Navigation.setRoot({
root: {
sideMenu: {
left: {
id: "AppSideMenu",
component: {
id: "HomeScreenDrawer",
name: "YO.HomeScreen.Drawer",
},
},
center: {
stack: {
id: "AppHomeStack",
children: [
{
component: {
id: "AppHomeScreen",
name: "YO.HomeScreen",
options: {
topBar: {
visible: false,
drawBehind: true,
height: 0,
},
statusBar: {
style: "light",
},
},
},
},
],
},
},
},
},
});
这样,当您要推送时,只需调用位于center{stack:{}}
下且ID为AppHomeStack
的主堆栈ID即可
现在在应用程序中的任何地方,这都可以解决问题
Navigation.push("AppHomeStack", {
component: {
name: "YO.UserScreen",
},
});