gpt4 book ai didi

navigation - ionic 角分量 : how to destroy?

转载 作者:行者123 更新时间:2023-12-04 13:40:52 25 4
gpt4 key购买 nike

我有一个 Ionic 4 应用程序,带有自定义组件的 angular 7。在这个组件中,我实现了对事件的订阅。事件发布后,我收到消息没有问题。如果我离开组件并再次返回它,如果发布了一个事件,我会收到两次消息。似乎同一 Controller 的前一个实例没有被破坏(如果 ngOnDestroy 被触发 - 我已经插入了一个 console.log)。
如果我重复此操作(离开并返回),我会收到 3 条消息,然后是 4 条,依此类推。

所以,我的问题是:组件是销毁了还是保留在内存中?

我希望每次进入组件时都会有一个新实例,并且所有以前的实例都被销毁。

最佳答案

我在我的项目中工作时遇到了类似的问题,每次访问页面时打开的模态数量都会增加。原来是订阅问题。

我在那里做的是,如果子组件存在于父页面中,我们会调用它的 ngOnDestroy,(您必须在某个页面中导入组件)每次离开父页面(ionViewWillLeave)时,就像 -

@ViewChild(someChildComponent) child;
subscriptions;

ionViewWillEnter() {
// your initialization goes here
}

ionViewWillLeave() {
this.subscriptions.unsubscribe;
if (this.child) {
this.child.ngOnDestroy();
}
}

或者,您可以使用父页面的 ngOnDestroy 和 ngOnInit,但请确保在您假设它们被调用时调用它们( ionic 堆栈页面而不是销毁它们,并且仅当该页面位于堆栈顶部时才调用 ngOnDestroy,然后从堆栈中删除,否则它会在离开或进入页面时使用它的额外生命周期钩子(Hook)。)

根据您的问题,这绝对是订阅问题。我会要求您完成订阅部分并对其进行调试,以查看是否在需要时调用了取消订阅。

关于navigation - ionic 角分量 : how to destroy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57414479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com