Basé sur la conversation des commentaires :
C'est peut-être la même chose du point de vue d'Angular, mais les pages et les composants ont une signification différente dans Ionic. En termes d'Angular, les deux sont juste des composants mais dans le contexte de Ionic, une page est un composant qui va agir comme une vue d'ensemble (il peut avoir des composants imbriqués) ; nous voyons les pages Ionic comme une concept autonome . La plupart du temps, dans les applications Angular, un composant ne sera qu'une partie d'un composant plus grand, et je pense que c'est la plus grande différence avec Pages.
À propos de l'utilisation des crochets de cycle de vie d'Angular, j'aime les utiliser lorsque je travaille dans des composants imbriqués, mais je préfère les crochets de cycle de vie de Ionic lorsque je travaille sur des pages. Principalement parce que des choses comme ionViewWillEnter
n'a pas trop de sens dans le contexte d'un simple composant, où ngOnInit
fait. Ceci étant dit, j'ai également utilisé certains crochets de cycle de vie d'Angular sur les pages, comme l'élément ngOnDestroy
(Je l'ai utilisé pour supprimer tous les abonnements d'une page lorsque cette page va être détruite), mais comme vous l'avez dit, ionViewWillUnload
semble être la bonne façon de le faire si nous voulons utiliser les crochets de cycle de vie de Ionic.
Je suppose que le plus des crochets du cycle de vie Ionic sont davantage liés à la manière dont l'utilisateur interagit avec la page dans son ensemble. (entrera sur une page, sortira d'une page, pourra entrer sur une page, pourra sortir d'une page...) et les crochets du cycle de vie d'Angular sont davantage liés aux différentes étapes de la vie d'un même composant (les entrées ont été initialisées, le détecteur de changement a vérifié s'il y avait eu des changements dans ce composant, ...), qui, comme vous pouvez le voir, peuvent ne pas être directement liés à l'interaction de l'utilisateur, et sont généralement des choses dont l'utilisateur n'est pas conscient.
Je suis presque sûr qu'il n'y a pas de règle concernant la meilleure approche, mais le plus important est la cohérence. Je pense qu'il est logique d'utiliser les crochets de cycle de vie de Ionic dans les composants qui sont des pages, et d'utiliser les crochets de cycle de vie d'Angular à l'intérieur des composants imbriqués. mais vous pouvez utiliser une approche différente, à condition de le faire de manière cohérente dans toute l'application.
9 votes
C'est peut-être la même chose du point de vue angulaire, mais Pages et Composants ont une signification différente en ionique. Les deux ne sont que des composants Mais une page est un composant qui agira comme une vue entière (elle peut avoir des composants imbriqués) ; nous voyons les pages Ionic comme un concept autonome. A composant ne sera qu'une partie d'un composant plus grand la plupart du temps dans les applications Angular, donc je pense que c'est la plus grande différence avec les applications Pages .
2 votes
À propos de l'utilisation des crochets de cycle de vie d'Angular, j'aime les utiliser lorsque je travaille dans des composants, mais je préfère les crochets de cycle de vie de Ionic lorsque je travaille sur des pages. Principalement parce que
ionViewWillEnter
n'a pas beaucoup de sens à l'intérieur d'un simple composant, où l'optionngOnInit
fait. J'utilise également certains crochets du cycle de vie d'Angular sur les pages, comme l'élémentngOnDestroy
(Je l'utilise pour supprimer tous les abonnements d'une page lorsque cette page est détruite). Je ne suis pas sûr que ce soit la meilleure façon de les utiliser, mais je suppose que c'est logique...0 votes
Oui, qu'en est-il
ionViewWillLeave()
événement pour la liquidation des abonnements ? Est-ce que ce n'est pas bon ? @sebaferreras1 votes
Ce ne serait pas correct, car ce crochet signifie que l'utilisateur quitte la page, mais pas que la page va être détruite, laissant ainsi quelques fuites de mémoire . Puisque Ionic met en cache les pages, si vous utilisez
ionViewWillLeave
vous pouvez nettoyer les abonnements et la prochaine fois que l'utilisateur se rendra sur cette page (si elle a été mise en cache, et donc non recréée), le code lié à ces abonnements ne sera pas exécuté.0 votes
Je suppose que les crochets de cycle de vie Ionic sont plus liés à l'interaction de l'utilisateur (entrera, sortira, pourra entrer, pourra sortir...) et que les crochets de cycle de vie Angular sont plus liés aux différentes étapes de la vie d'un composant (qui peuvent ne pas être directement liées à l'interaction de l'utilisateur du tout).
0 votes
OK. Mais j'espère que c'est ce dont nous avons besoin, non ?
ionViewWillUnload - Runs when the page is about to be destroyed and have its elements removed.
On ne peut pas utiliser ça ? @sebaferreras0 votes
D'après votre commentaire ci-dessus, où avez-vous créé les abonnements ? A l'intérieur du
constructor
? Cela dépend de l'endroit où nous créons les abonnements non ? Je veux dire l'autorisation des abonnements ? Si nous le créons à l'intérieur duionViewDidEnter()
alors cela ne dépend pas du scénario du cache, non ? @sebaferreras0 votes
J'ai acquis de grandes connaissances en utilisant vos commentaires ci-dessus. Si vous mettez tout ensemble (comme une réponse) en un seul endroit, j'espère que d'autres aussi peuvent obtenir un très bon aperçu de ce domaine.@sebaferreras
1 votes
Merci beaucoup :) Comme vous l'avez dit
ionViewWillUnload
semble être le bon endroit pour faire le nettoyage (pour une raison quelconque, je n'étais pas au courant de ce crochet). Et vous avez également raison concernant le scénario du cache, si vous utilisez les hooks Ionic pour créer l'abonnement, vous pouvez également utiliser les hooks Ionic pour le nettoyer. Il s'agit de savoir à quel moment particulier (hook) vous voulez faire quelque chose.