angular - 离子离开后不破坏页面
问题描述
由于我的工作需要,我开始使用 Ionic (TypeScript + Angular),我以前从未为移动设备编写过代码,这是我第一次。
我遇到了一个不知道如何解决的问题,让我试着解释一下流程:
流程 1
- UserA使用他们的用户名/密码登录
- UserA登录后被重定向到个人资料页面
- 用户 A注销
流程 2
- UserB使用他们的用户名/密码登录
- UserB在登录后被重定向到个人资料页面(他会看到UserA个人资料信息)
注意事项
我正在使用@ionic/storage 存储会话但与存储问题无关,我知道这是因为在注销后我尝试等待 session.get('user')并且它返回未定义,并且在新登录后我await session.get('user')并显示正确的用户(刚刚连接的用户)
我认为它是什么?
我认为 ionic 将页面保存在缓存中,当新用户签署方法构造函数并且不再调用ngOnInit时......变量保留在旧用户数据中,并且视图呈现错误信息。
我有点确定这是问题所在,因为并非每次发生此错误时,有时都会按原样呈现所有内容,但我不知道该怎么做:/
问题
有人已经有这个问题了吗?你做了什么来解决这个问题?
我有办法告诉 ionic 不要将页面保存在缓存中吗?
在 router.navigate() 到另一个页面之后,有一种方法可以强制销毁最后一个内容吗?
解决方案
默认情况下,Ionic 不会破坏页面 - 它将它们保存在 DOM 中以通过后退/前进按钮启用旅行。在 vanilla Angular 路由中,您可以通过 RouteReuseStrategy 进行控制,但如果您使用的是 ion-router-outlet,则不能。ion-router-outlet 实现了一个存储导航历史的堆栈,并且只会在创建组件后运行 Ionic 生命周期挂钩。您可以使用 navigateRoot() 清除此堆栈,或切换到 Angular 的路由器出口和路由器。
在我看来,这是一个重大缺陷,并且没有足够好的记录。在许多情况下,不希望将渲染的组件无限期地存储在 DOM 中,并且可能会对性能产生重大影响。
推荐阅读
- python - 烧瓶-wtforms。QuerySelectField 运行时错误
- java - Java 将一个对象转换为他的超类,然后将其转换回自身,从而保留引用
- dask - Dask groupby 关于期货
- html - 从 Django 为初学者获取 /static/css/base.css HTTP/1.1" 404 1660
- mysql - 如何在 GROUP_CONCAT 中使用选择别名?
- javascript - 为什么这个滚动代码在接近 div 的底部时会中断?
- reactjs - React-router.Problem with layouts,看不到其他路由
- python - Wayland 上的 wxpython 无法与屏幕坐标交互(移动窗口、GetScreenPosition 等)
- javascript - 如何访问键是另一个 JSON 对象的值的 JSON 对象的值?
- javascript - 是否可以从这样的方法获得反向输出?如果有怎么办?