你好呀,
我是一名 Angular 開發人員,最近進入了 Ionic,我有一些關于結合 Angular 的 Ionic 生命周期實作的主題。
我在這里描述的問題并沒有真正被社區注意到,所以我只是想知道我是否做錯了什么,或者所描述的觀點在某種程度上是否有效。
角度異步管道
異步管道僅在頁面完全銷毀時取消訂閱(例如導航到根目錄)。在此之后,他們只會在創建組件的全新實體時再次訂閱。在每次啟動組件時嘗試獲取新值時,這可能會使它們過時。
我遇到的一個“解決方案”是在 ionic 生命周期鉤子中重新初始化可觀察物件,以強制使用默認的 Angular 行為。缺點是這會在后臺生成許多等待訂閱,即使它們只等待銷毀。
子組件中的 OnDestroy
假設我們有一個帶有子組件的 Ionic 頁面。子組件是一個二維碼掃描儀,可以從外部庫訪問相機。導航到組件時會打開相機流。它應該在進一步導航時再次關閉。
問題是由于Ionic路由快取,父頁面被快取。這導致孩子的 OnDestroy 生命周期鉤子不被呼叫。孩子現在不知道它是否正在使用,并且在導航到下一頁時不會停用相機流。接下來是始終打開的相機流。
這里的解決方法是使用僅在父頁面打開時才處于活動狀態的條件,并*ngIf在子組件周圍放置一個。
子組件中的 OnInit
當子組件依賴于父頁面提供的值時,生命周期執行順序可能會變得困難。
默認順序:Parent ngOnInit-> Child ngOnInit-> Parent ionViewWillEnter->Parent ionViewDidEnter
如果父級resourceId在其中設定了類似的內容ionViewWillEnter并將其提供給他們的子級,我們不能依賴子級中的該值,因為在執行子級時可能不會設定它ngOnInit。我還假設這可能會變得更糟,因為在初始化父級之前執行了子級的初始化。
請注意,子行程中的 ionic 生命周期鉤子根本不會執行,如 Ionic 論壇中所述。
uj5u.com熱心網友回復:
您應該在官方版塊中查看:https : //forum.ionicframework.com/t/do-i-understand-the-routing-wrongly/217860/2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/380228.html
標籤:有角的 打字稿 离子框架 渐进式网络应用程序 角度路由
下一篇:deque.at無加工函式
