Lua*_*sto 1 typescript ionic-framework angular
由于工作上的一些需要,我开始使用 Ionic(TypeScript + Angular),我以前从未为移动设备编写过代码,这是我第一次。
我遇到了一个问题,我不知道如何解决它,让我尝试解释一下流程:
我正在使用 @ionic/storage 存储会话,但与存储问题无关,我知道因为注销后我尝试等待session.get('user')并且它返回未定义,并且在新登录后我wait session.get('user')并显示正确的用户(刚刚连接的用户)
我认为 ionic 将页面保存在缓存上,当新用户签署方法构造函数并且不再调用ngOnInit时......变量保留旧用户数据,并且视图呈现错误信息。
我有点确定这是问题所在,因为并不是每次发生此错误时,有时所有内容都会按其应有的方式呈现,但我不知道该怎么办:/
有人已经遇到这个问题了吗?您采取了什么措施来解决这个问题?
我有办法告诉 ionic 不要将页面保留在缓存中吗?
有没有办法在 router.navigate() 到另一个页面后强制销毁最后的内容?
小智 7
默认情况下,Ionic 不会销毁页面 - 它将它们保留在 DOM 中,以便通过后退/前进按钮启用移动。在普通 Angular 路由中,您可以通过 RouteReuseStrategy 控制它,但如果您\xe2\x80\x99使用 ion-router-outlet,则不能。ion-router-outlet 实现了一个存储导航历史记录的堆栈,并且仅在创建组件后才运行 Ionic 生命周期挂钩。您可以使用navigateRoot() 清除此堆栈,或切换到Angular\xe2\x80\x99s router-outlet 和router。
\n我认为这是一个重大缺陷,并且没有得到足够的记录。在许多情况下,不希望将渲染的组件无限期地存储在 DOM 中,并且可能会对性能产生重大影响。
\n小智 6
我使用Ionic 4 Angular 8遇到了同样的问题。我使用{ replaceUrl: true }当用户单击注销时修复了它。例如:
logout() {
...
this.router.navigate(["login"], { replaceUrl: true });
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5243 次 |
| 最近记录: |