首页 > 解决方案 > 从反应原生的堆栈导航器中删除屏幕

问题描述

我有一个具有以下流程的用例:仪表板-> AddProductScreen1.0->AddProductScreen2.0-> 产品详细信息屏幕

这些屏幕位于堆栈导航器中

添加产品屏幕是一个多页表单,用于填写产品的详细信息。在 AddProductScreen2.0 上单击 AddProduct 按钮时,将调用 API 来保存产品。如果调用成功,我们将转到 ProductDetailsS​​creen。此时我想从堆栈导航器中删除 AddProductScreens 以便在单击后退按钮时我们再次移动到仪表板而不是 AddProductScreens

如何在本机反应中做到这一点?

标签: reactjsreact-nativereact-navigationreact-native-navigationstack-navigator

解决方案


我能想到的是,当您从屏幕 1 移动到屏幕 2 和详细信息屏幕时,您可以使用替换而不是推送/导航,如果您需要从屏幕 2 导航到屏幕 1,您也可以覆盖后退按钮操作以使用替换。第二个选项是在第二个屏幕上弹出/ popToTop,然后导航到详细信息。

例子:

useEffect(() => {
        if (newCreatedTaskId) {
            navigation.pop();
            navigation.replace('UpdateTaskMembers', {
                id: newCreatedTaskId,
                newTask: true,
            });
        }
    }, [newCreatedTaskId, navigation]);

推荐阅读