首页 > 解决方案 > unmountOnBlur 时没有清理路由

问题描述

我有一个应用程序,它使用 this.props.navigation.navigate('Screen',{order}) 将屏幕 1 的订单作为参数传递到屏幕 2 并在屏幕 2 中执行一些操作。然后我导航到另一个使用抽屉侧边菜单的屏幕。当我使用抽屉菜单返回屏幕 2 时,订单仍在参数中(路线未重置)。我在我的项目中使用类 Component 并且当我尝试在 componentWillUnmount 中放置类似重置的东西时,但是反应本机不允许我这样做,因为这将是一个异步调用。

在我的订单课程中,我做了(屏幕 2):

componentWillUnmout() {
  // some code
  
  this.props.navigation.reset();
}

在屏幕 1 中,我做了:

  this.props.navigation.navigate('Screen 2', {order});

我试着做这个问题中描述的事情:https ://github.com/react-navigation/react-navigation/issues/6915但我没有成功。

在这种情况下我怎么能重置这个参数?当导航到抽屉菜单中的另一个页面时,我可以设置一个监听器来重置路由吗?

标签: react-nativereact-navigationnavigation-drawerreact-navigation-v5

解决方案


如果您的第二页是订单详细信息,您最好通过推送一个新页面来使用堆叠的屏幕。

this.props.navigation.push('orderDetails', {order});

像这样,你在堆栈顶部推送一个屏幕。在您的路线历史中导航功能搜索,如果屏幕之前已经打开,它会返回到它。


推荐阅读