首页 > 解决方案 > 在我的情况下,如何清除以前从子屏幕传递的路由参数

问题描述

我正在开发一个 react-native 项目。这是我的主屏幕,可以从子屏幕接收路由参数。(用户可以从MainScreento导航,ChildScreen反之亦然。)

const MainScreen = ({route, navigation}) => {

  if (route?.params) {
    //do something
  } else {
    //do something else
  }
 ...
}

当从子屏幕导航回主屏幕时,在里面ChildScreen,我有:

//this is inside Child screen
onPress={() =>
            navigation.navigate("MainScreen", {data: 'foo'})
          }

上面的代码片段说明了我如何将路由参数从子屏幕传递到主屏幕。

总的来说,它运作良好。然而有一个问题。那是在 内部,一旦从toMainScreen导航回来,内部参数的值就会被保留。我的意思是,如果我终止应用程序的进程并再次启动应用程序并再次显示,ChildScreenMainScreenroute?.paramsMainScreen

if (route?.params) {
    //do something
  } 

被执行是因为route?.params包含先前从子屏幕传递的参数。这很糟糕,因为我希望我的主屏幕有一个干净的开始。如何摆脱这个问题?

标签: react-nativereact-native-navigation

解决方案


尝试navigation.push代替navigation.navigate.


推荐阅读