【发布时间】:2020-10-09 00:10:43
【问题描述】:
目前,我正在使用 Angular 9(单页应用程序)开发一个 Ionic 5 应用程序,并且我在路由/组件缓存方面遇到了一些问题(至少我是这么认为的)并且会需要一点帮助。我会尽我所能解释我的情况,以便您了解我正在处理的概念和问题。
我有一页上有 2 个<ion-tab-bar> 控件/选项卡(活动和非活动)。在“活动”选项卡上,我列出了我的数据库中在数据库中设置了“活动”标志的产品,而在“非活动”上,我列出了相反的产品。
在这些选项卡上,产品以面向列表的方式显示,样式为卡片/卡片组件。
单击卡片后,我将用户导航到一个新页面 (/active/:id),在该页面上显示产品详细信息。除其他功能外,还有一个将产品标记为非活动状态的按钮。通过单击此按钮,我正在进行 api 调用,它将产品在数据库中标记为非活动。
此外,此页面包含一个 <ion-back-button> 按钮组件,它可以让我回到上一页。
问题
我的问题是,当我将产品标记为非活动时,它会更改其在数据库中的状态,但是当我单击后退按钮并返回到活动选项卡时,我标记为非活动的产品仍在活动选项卡,我注意到没有调用任何生命周期方法,也没有执行 api 调用以刷新列表。
之后,当我转到非活动选项卡时,现在我的产品显示在此处,当我再次切换到活动选项卡时,它不再在活动选项卡下,这是我最初所期望的。
这种行为不仅在我通过后退按钮导航时发生,而且在我通过标题导航导航时也会发生(因此,我认为这与从位置历史呈现页面无关)。
我在下面发布了一张图片,它直观地代表了问题。
任何建议/指南将不胜感激。 提前致谢。
【问题讨论】:
-
您是否使用
ionic lifecycle方法如ionViewWillEnter和ionViewWillLeave? -
最初,我在
ionViewWillEnter中使用 NgRx 获取数据。当我导航到单个产品页面时,没有调用任何生命周期方法,ngOnDestroy、ionViewWillLeave或ionViewDidLeave。 -
你在使用
ion-tabs组件吗? -
是的,我有 2 个
<ion-tab-bar>组件被包裹在<ion-tabs>中 -
我在下面添加了解决方案,如果它对您有用,请告诉我们。
标签: angular ionic-framework angular-router angular-lifecycle-hooks ionic-tabs