gpt4 book ai didi

angular - ionViewWillEnter 与 ionViewDidEnter

转载 作者:太空狗 更新时间:2023-10-29 16:53:26 24 4
gpt4 key购买 nike

当我们不想重新启动已经缓存的任务时,毫无疑问我们将使用 ionDidLoad

现在,假设我们每次进入 View 时都需要执行一项任务,我们如何在使用 ionViewWillEnterionViewDidEnter 之间做出选择。

我没有找到任何明确的指南。

例如:
1) 获取导航参数
2) 调用 REST API
3) 声明变量
4) 在 DOM 元素完全加载后启动一些东西(例如:google map init)

补充说明:
我注意到正在寻找 ionic 文档中清楚写明的答案。我想知道的是 ionViewWillEnter vs ionViewDidEnter

的优缺点

例如:在 ionViewDidEnter 中启动会导致一些延迟(例如,我对此不确定)——即使是微不足道的延迟

最佳答案

sebaferreras answer很棒,但缺少一些要点。

一、关于ionic life cycle .如果您记下所有 ionic 事件并在每个事件中放置一个 console.log,您将看到以下场景:

constructor --> ionViewDidLoad --> ionViewWillEnter --> ionViewDidEnter --> ionViewWillLeave --> ionViewDidLeave --> ionViewWillUnload.

constructor 在页面启动时首先运行。这是您声明变量默认值的最佳位置。
ionViewDidLoad 在 View 完全加载时触发。这意味着您可以在此处附加 DOM 元素。

ionViewWillEnter 在页面即将进入并成为事件页面时运行。ionViewDidEnter 在页面完全进入 并且现在是事件页面时运行。ionViewDidEnter 将在 ionViewWillEnter 中的所有 同步 完成后触发。为了证明这一点,只需将大量代码放入ionViewWillEnter:

ionViewWillEnter(){
console.log("ionViewWillEnter")
for(let i = 0; i < 100000; i++){
console.log(i);
}
}
ionViewDidEnter(){
console.log("ionViewDidEnter")
}

运行您的代码,您会发现启动页面需要很长时间。所以永远不要将繁重的同步代码放入ionViewWillEnter。只需在 ionViewWillEnter 中使用 asynchronous 并将所有 synchronous 代码移至 ionViewDidEnter。因为在那里,您的页面被输入并且它会产生更好的用户体验。

关于angular - ionViewWillEnter 与 ionViewDidEnter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46406300/

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