【问题标题】:Route do not been cleaned when unmountOnBlurunmountOnBlur 时没有清理路由
【发布时间】:2021-09-18 01:12:57
【问题描述】:

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

在我的订单课程中我做了(屏幕 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-native react-navigation navigation-drawer react-navigation-v5


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 2012-10-31
    • 2014-09-12
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多