首页 > 解决方案 > 离子离开后不破坏页面

问题描述

由于我的工作需要,我开始使用 Ionic (TypeScript + Angular),我以前从未为移动设备编写过代码,这是我第一次。

我遇到了一个不知道如何解决的问题,让我试着解释一下流程:

流程 1

  1. UserA使用他们的用户名/密码登录
  2. UserA登录后被重定向到个人资料页面
  3. 用户 A注销

流程 2

  1. UserB使用他们的用户名/密码登录
  2. UserB在登录后被重定向到个人资料页面(他会看到UserA个人资料信息)

注意事项

我正在使用@ionic/storage 存储会话但与存储问题无关,我知道这是因为在注销后我尝试等待 session.get('user')并且它返回未定义,并且在新登录后我await session.get('user')并显示正确的用户(刚刚连接的用户)

我认为它是什么?

我认为 ionic 将页面保存在缓存中,当新用户签署方法构造函数并且不再调用ngOnInit时......变量保留在旧用户数据中,并且视图呈现错误信息。

我有点确定这是问题所在,因为并非每次发生此错误时,有时都会按原样呈现所有内容,但我不知道该怎么做:/

问题

有人已经有这个问题了吗?你做了什么来解决这个问题?

我有办法告诉 ionic 不要将页面保存在缓存中吗?

在 router.navigate() 到另一个页面之后,有一种方法可以强制销毁最后一个内容吗?

标签: angulartypescriptionic-framework

解决方案


默认情况下,Ionic 不会破坏页面 - 它将它们保存在 DOM 中以通过后退/前进按钮启用旅行。在 vanilla Angular 路由中,您可以通过 RouteReuseStrategy 进行控制,但如果您使用的是 ion-router-outlet,则不能。ion-router-outlet 实现了一个存储导航历史的堆栈,并且只会在创建组件后运行 Ionic 生命周期挂钩。您可以使用 navigateRoot() 清除此堆栈,或切换到 Angular 的路由器出口和路由器。

在我看来,这是一个重大缺陷,并且没有足够好的记录。在许多情况下,不希望将渲染的组件无限期地存储在 DOM 中,并且可能会对性能产生重大影响。


推荐阅读