wix反应本机导航v2 | 如何从侧抽屉组件将新屏幕推送到当前屏幕

地球

我有下一个布局:

    Navigation.setRoot( {
        root: {
            sideMenu: {
                right: {
                    component: {
                        id: 'sideDrawer',
                        name: DRAWER,
                    }
                },
                center: {
                    bottomTabs: {
                        id: 'bottomTabs',
                        children: [
                            {
                                stack: {
                                    children: [
                                        {
                                            component: {
                                                id: 'searchTab',
                                                name: SEARCH_TAB,
                                                options: {
                                                    bottomTab: {
                                                        text: 'Search',
                                                        icon: iconsMap[ 'search' ],
                                                        testID: 'searchTab',
                                                    },
                                                    topBar,
                                                }
                                            }
                                        }
                                    ]
                                }
                            },
                            {
                                stack: {
                                    children: [
                                        {
                                            component: {
                                                id: 'secondTab',
                                                name: SECOND_TAB,
                                                options: {
                                                    bottomTab: {
                                                        text: 'Second Tab',
                                                        icon: iconsMap[ 'random' ],
                                                        testID: 'secondTab',
                                                    },
                                                    topBar,
                                                }
                                            }
                                        }
                                    ]
                                }
                            },
                        ]
                    }
                }
            }
        }
    } )

轻按任意标签上topBar中的汉堡按钮时,抽屉将打开。在侧面抽屉中,我有一些菜单项。当我点击一个项目时,我想将新屏幕推送到当前活动的选项卡(searchTab或secondTab)。请注意,我从抽屉组件中推入。面临的挑战是如何知道要推送到的当前活动项目的ID,或者还有其他方法可以做到这一点?

地球

好,知道了 希望这可以帮助其他也在此方面挣扎的人。在抽屉组件中,我有一个全局侦听器:

constructor( props: Props ) {
    super( props )

    Navigation.events().registerComponentDidAppearListener( ( { componentId } ) => {
        // only spy on tabs we don't need other screens
        if (componentId === 'searchScreen' || componentId === 'secondScreen') {
            this.setState({
                activeComponentId: componentId
            })
        }
}

然后,当我需要打开一个屏幕时,我已经有了活动的组件ID,可以安全地将新屏幕推送到该屏幕上。

openMenuItem( screenName ) {
    // close drawer
    Navigation.mergeOptions( 'sideDrawer', {
        sideMenu: {
            right: {
                visible: false
            }
        }
    } )

    // open menu item
    Navigation.push( this.state.activeComponentId, {
        component: { name: screenName }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Navigation.push(来自wix的react本机导航的v2),我没有在目标组件中获得道具。如何获得道具?

反应导航(V2 / V3):如何在屏幕上的NavigationOptions中访问navigation.state.index

在屏幕之间反应本机导航

反应本机导航-屏幕的多个实例

反应本机导航找不到屏幕

反应本机导航不显示堆栈屏幕

从FlatList在屏幕之间反应本机导航

反应本机导航到屏幕外部渲染

在 API 调用上反应本机屏幕导航

如何使用反应钩子将新值推送到当前数组中?

反应本机反应导航抽屉未打开

从子组件反应本机导航

反应原生;如何调用新组件打开新屏幕?

反应本机自定义抽屉导航

导航在Drawer Navigation V3中的自定义抽屉组件中不起作用(反应本机)

在推送的屏幕上反应未定义的本机导航道具

如何将JSON从materialTopTabNavigator传递到其他屏幕组件反应本机?

反应本机导航组件路线问题

反应平面列表中子组件的本机导航

如何在注销时从本机抽屉式导航器中删除屏幕(卸载组件)?如何重新加载组件数据?

在屏幕间导航时遇到问题。反应本机

React Navigation(v2)如何将道具传递到我的TabNavigator并将这些道具发送到屏幕

如何在点击按钮时通过反应导航更改本机反应的屏幕?

如何在抽屉导航中创建菜单图标?反应本机

向Docusaurus v2导航栏添加新标签

如何始终将初始屏幕推送到堆栈导航器 (react-navigation@5)

反应本机刷新屏幕/组件/更改状态

如何在反应导航中将道具传递给屏幕组件

如何在反应导航中将道具传递到“屏幕” /组件