-1

在屏幕之间导航时不会重置屏幕状态。

屏幕 A:地图(主屏幕) 屏幕 B:地图过滤器

当用户登录时,他会看到主屏幕 - 屏幕 A - 与 firebase 实时数据库中的用户一起在 componentdidmount setState 上。为了过滤地图,他进入屏幕 B 设置过滤器,过滤器被保存到 firebase。保存过滤器后,他返回屏幕 A,但初始状态的用户是相同的,要查看过滤列表,用户需要重新启动应用程序。

当用户发送消息时,与天才聊天库和 Firebase 有同样的问题,聊天屏幕会在其他用户的应用程序上随机打开并重新打开,即使用户没有聊天也是如此。

在这两种情况下都尝试将 isMonted = true 放在 componentdidmount 上,并在离开屏幕时将其设置为 false,但没有成功。

尝试将屏幕将所有初始状态设置为 false 时设置状态,也没有运气。

所有屏幕都在同一个导航堆栈上。

使用:-expo -firebase -react 本机导航 -react 本机地图 -giftedchat

当用户离开屏幕并防止屏幕随机打开时,有什么方法可以卸载状态?

尝试过:屏幕出现时调用哪个生命周期事件?但数据保持不变

4

1 回答 1

0

从文档:

重置操作会擦除整个导航状态并将其替换为多个操作的结果。

import { StackActions, NavigationActions } from 'react-navigation';

const resetAction = StackActions.reset({
  index: 0,
  actions: [NavigationActions.navigate({ routeName: 'Screen B' })],
});
this.props.navigation.dispatch(resetAction);
于 2019-12-19T13:23:03.757 回答