reactjs 如何防止使用React Navigation v6卸载?

gopyfrb3  于 2023-04-20  发布在  React
关注(0)|答案(1)|浏览(116)

我有一个标签导航器,里面有许多不同的屏幕堆栈,所有的屏幕堆栈都是由一个屏幕组成的。下面是我代码中的两个例子。当我执行第一个时,没有卸载任何东西。当我执行第二个时,所有东西都卸载了。

// Nothing unmounts
navigation.navigate("TabNavigator", {
screen: "ProfileStack",
params: {
    screen: "ProfileScreen",
    params: {
        userId: user?.userId,
    },
},
});

// Everything unmounts
navigation.push("TabNavigator", {
    screen: "ProfileStack",
    params: {
        screen: "ProfileScreen",
        params: {
            userId: user?.userId,
        },
    },
});

我有时也需要使用push(),因为如果一个用户在一个配置文件上,然后转到另一个配置文件,我需要他们都在堆栈中,以便返回按钮正常工作。为什么会发生这种情况?我能做些什么来防止这种情况?谢谢。

5f0d552i

5f0d552i1#

而不是导航你可以尝试重置你的navigationhistory如下所示

navigation.dispatch(
          CommonActions.reset({
            index: 1,
            routes: [
              {
                name: TabNavigator,
                state: {
                  routes: [
                    {
                      name: ProfileStack,
                    },
                    {
                      name: ProfileScreen,
                      params: {
                               userId: user?.userId,
                             }
                    },
                  ],
                },
              },
            ],
          }),
        );

参考此链接获取更多信息https://reactnavigation.org/docs/navigation-actions/

相关问题