react-native - 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但我没有成功。
在这种情况下我怎么能重置这个参数?当导航到抽屉菜单中的另一个页面时,我可以设置一个监听器来重置路由吗?
解决方案
如果您的第二页是订单详细信息,您最好通过推送一个新页面来使用堆叠的屏幕。
this.props.navigation.push('orderDetails', {order});
像这样,你在堆栈顶部推送一个屏幕。在您的路线历史中导航功能搜索,如果屏幕之前已经打开,它会返回到它。
推荐阅读
- regex - 我们可以在 NotePad++ 中搜索必须在同一行中的 2 个字符串吗?
- c# - 如何在 dotnet core 中操作浏览器?
- java - Lombok onlyExplicitlyIncluded 配置键
- python - 关闭()后无法删除python文件
- php - PHP多维数组具有另一个多维数组的所有子数组
- python-3.x - 如何找出列表中的值索引?
- c++ - 涉及上限和下限的问题
- java - 获取间歇性 KafkaProducerException:无法发送 org.apache.kafka.common.errors.TimeoutException
- javascript - 避免可悬停内容的单击事件触发父元素的单击事件
- agda - Cubical Agda:我如何证明两件事不相等