- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我们不想重新启动已经缓存的任务时,毫无疑问我们将使用 ionDidLoad
。
现在,假设我们每次进入 View 时都需要执行一项任务,我们如何在使用 ionViewWillEnter
和 ionViewDidEnter
之间做出选择。
我没有找到任何明确的指南。
例如:
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/
当我们不想重新启动已经缓存的任务时,毫无疑问我们将使用 ionDidLoad。 现在,假设我们每次进入 View 时都需要执行一项任务,我们如何在使用 ionViewWillEnter 和 ionVi
在使用 Ionic 4 创建混合应用程序时,使用 Angular Lifecycle Hook 和 Ionic Lifecycle Hooks 哪个更好? Angular 生命周期钩子(Hook) -
我正在使用 once 方法从 firebase 检索所有帖子(新闻)并将其显示在主页选项卡上(应用程序启动时的第一个选项卡): get_all_posts(){ this.posts = [];
Ionic 3 Reactive Form 在 IonViewDidLoad 或 ionViewWillEnter 中不起作用。它说 UserInfoPage.html:18 ERROR TypeEr
我是一名优秀的程序员,十分优秀!